{
  "match_info": {
    "home_team": "Crystal Palace",
    "away_team": "Newcastle",
    "tournament": "Premier League",
    "date": "20261025",
    "timezone": "America/New_York",
    "home_formation": "3-4-2-1",
    "away_formation": "4-2-3-1",
    "lineup_status": "unconfirmed_official",
    "lineup_source": "/matches/get-lineups",
    "lineup_confirmed": false,
    "lineup_confidence": 0.75
  },
  "prediction": {
    "most_likely_score": "1-2",
    "home_goals": 1,
    "away_goals": 2,
    "most_likely_score_probability": 0.085,
    "most_likely_winning_score_home": "2-1",
    "most_likely_winning_score_home_probability": 0.0808,
    "most_likely_winning_score_away": "1-2",
    "most_likely_winning_score_away_probability": 0.085,
    "match_resolution": "regulation",
    "predicted_winner": "Newcastle",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2321,
      "shootout_home_win_probability": null,
      "shootout_away_win_probability": null,
      "penalty_home_goals": null,
      "penalty_away_goals": null,
      "penalty_score": null,
      "penalty_winner": null,
      "penalty_winner_goals": null,
      "penalty_loser_goals": null,
      "penalty_result": null,
      "home_advance_probability": null,
      "away_advance_probability": null,
      "projected_winner": null,
      "projected_winner_probability": null,
      "final_score_after_penalties": null,
      "deciding_stage": null,
      "deciding_scoreline": null,
      "deciding_scoreline_probability": null,
      "deciding_route_probability": null,
      "reason": "Tie-breaker not required for this match context."
    },
    "top_5_scorelines": [
      {
        "score": "1-1",
        "probability": 0.1016
      },
      {
        "score": "1-2",
        "probability": 0.085
      },
      {
        "score": "2-1",
        "probability": 0.0808
      },
      {
        "score": "2-2",
        "probability": 0.0681
      },
      {
        "score": "0-1",
        "probability": 0.0622
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0381,
      "0-1": 0.0622,
      "0-2": 0.0531,
      "0-3": 0.0298,
      "0-4": 0.0126,
      "0-5": 0.0042,
      "0-6": 0.0012,
      "1-0": 0.059,
      "1-1": 0.1016,
      "1-2": 0.085,
      "1-3": 0.0478,
      "1-4": 0.0201,
      "1-5": 0.0068,
      "1-6": 0.0019,
      "2-0": 0.0479,
      "2-1": 0.0808,
      "2-2": 0.0681,
      "2-3": 0.0383,
      "2-4": 0.0161,
      "2-5": 0.0054,
      "2-6": 0.0015,
      "3-0": 0.0256,
      "3-1": 0.0431,
      "3-2": 0.0364,
      "3-3": 0.0204,
      "3-4": 0.0086,
      "3-5": 0.0029,
      "3-6": 0.0008,
      "4-0": 0.0102,
      "4-1": 0.0173,
      "4-2": 0.0146,
      "4-3": 0.0082,
      "4-4": 0.0034,
      "4-5": 0.0012,
      "5-0": 0.0033,
      "5-1": 0.0055,
      "5-2": 0.0047,
      "5-3": 0.0026,
      "5-4": 0.0011,
      "6-0": 0.0009,
      "6-1": 0.0015,
      "6-2": 0.0012,
      "6-3": 0.0007
    },
    "outcome": {
      "home_win": 0.3662,
      "draw": 0.2321,
      "away_win": 0.4017
    },
    "markets": {
      "over_2_5_goals": 0.6382,
      "under_2_5_goals": 0.3618,
      "btts_yes": 0.6514,
      "btts_no": 0.3486,
      "home_clean_sheet": 0.1853,
      "away_clean_sheet": 0.2015
    },
    "home_ratings": {
      "DR": 6.75,
      "MCR": 6.88,
      "ATR": 6.75,
      "GK": 6.99
    },
    "away_ratings": {
      "DR": 6.93,
      "MCR": 6.89,
      "ATR": 6.79,
      "GK": 6.94
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Crystal Palace vs Newcastle. Most likely scoreline: 1-2. Lambdas derived from 7 home and 5 away individual player duels. Head-to-head: Crystal Palace 2W-3D-5L vs Newcastle over 10 meetings.",
      "key_player": "Projected scorer(s): Jean-Philippe Mateta, Yoane Wissa, William Osula",
      "tactical_analysis": "Tactical parity between 3-4-2-1 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Adam Wharton vs Nico González will be the pivotal duel. Total antagonist xG — Home: 1.05, Away: 0.98. Home danger zone: Shadow Striker vs CDM + CB — Zone 14 Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.7,
    "home_lambda": 1.602,
    "away_lambda": 1.686,
    "h2h": {
      "available": true,
      "meetings": 10,
      "home_wins": 2,
      "away_wins": 5,
      "draws": 3,
      "home_multiplier": 0.9786,
      "away_multiplier": 1.0214
    },
    "modal_scoreline": "1-1",
    "modal_scoreline_probability": 0.1016,
    "headline_policy": null
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.3662,
      "draw": 0.2321,
      "away_win": 0.4017
    },
    "favorite": "Newcastle",
    "favorite_win_probability": 0.4017,
    "fair_spread": -0.084,
    "fair_total": 3.288,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Crystal Palace",
        "estimate": 1.602,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Newcastle",
        "estimate": 1.686,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.6382,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.6514,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Crystal Palace",
        "estimate": 1.0,
        "probability": 0.1853,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Newcastle",
        "estimate": 1.0,
        "probability": 0.2015,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Ismaïla Sarr (Crystal Palace)",
        "estimate": 0.4037,
        "probability": 0.3322,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "William Osula (Newcastle)",
        "estimate": 0.4224,
        "probability": 0.3445,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Adam Wharton (Crystal Palace)",
        "estimate": 0.1979,
        "probability": 0.1795,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Lewis Hall (Newcastle)",
        "estimate": 0.1867,
        "probability": 0.1703,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "high",
      "expected_total_goals": 3.288,
      "expected_total_shots": 27,
      "expected_total_passes": 836,
      "expected_pressing_actions_per_90": 15.6,
      "possession_home_pct": 50.0,
      "possession_away_pct": 50.0,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Newcastle",
      "favorite_win_probability": 0.4017,
      "script": "Newcastle is the fair winner side, but the baseline remains narrow: fair spread -0.08 goals and fair total 3.29.",
      "first_half": "Expect high tempo while both sides test the matchup thesis; shot baseline is about 14 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Crystal Palace must keep the match inside one goal.",
      "late_game": "A Newcastle lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Crystal Palace chance creation leans on Ismaïla Sarr against Nico González, Sven Botman in Shadow Striker vs CDM + CB — Zone 14 Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Crystal Palace: starters carry the main goal usage through Jean-Philippe Mateta; bench watchlist: Jørgen Strand Larsen, Quinten Timber, Evann Guessand.",
      "Newcastle: starters carry the main goal usage through Yoane Wissa, William Osula; bench watchlist: Nick Woltemade, Bazoumana Touré, Aladji Bamba.",
      "Assist usage should flow through Adam Wharton, Harvey Barnes; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Newcastle tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects high tempo, about 14 total first-half shots, and 1.64 first-half xG pace.",
      "45-70: If the match is level, watch midfield control and the listed bench watchlists for usage changes.",
      "70-90: If Crystal Palace is chasing, transition and set-piece volume become the primary live deviation signal; a draw state keeps set pieces and transition chances live."
    ],
    "invalidation_triggers": [
      "Early red card, injury, or goalkeeper change for Newcastle.",
      "Crystal Palace wins the midfield/territory battle beyond the possession baseline.",
      "Pace collapses: first 25 minutes fall well below the shot and box-entry baseline.",
      "Set pieces, penalties, or second balls create more danger than the open-play matchup thesis."
    ],
    "top_3_risk_factors": [
      {
        "factor": "Low-event scoring variance",
        "impact": "One penalty, deflection, or missed big chance can overwhelm the fair win probability."
      },
      {
        "factor": "Late lineup or role change",
        "impact": "A pregame XI, injury, or tactical role shift can invalidate player prop and usage estimates."
      },
      {
        "factor": "Discipline and set-piece volatility",
        "impact": "Cards, fouls in dangerous zones, and corner volume can change the expected game script quickly."
      }
    ]
  },
  "teams": {
    "Crystal Palace": {
      "formation": "3-4-2-1",
      "players": {
        "Tyrick Mitchell": {
          "player_id": 988275,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 3,
          "height": 174,
          "market_value": 23000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1199,
            "assist_rate": 0.0818,
            "assists": 0,
            "expected_goals": 0.0915,
            "goal_rate": 0.0872,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8329,
            "minutes": 85,
            "total_pass": 30,
            "accurate_pass": 22,
            "duels_won": 4,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 11,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 12,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 54,
            "possession_lost": 13.7496,
            "dispossessed": 0.7931,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 2,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.146,
            "ball_carries": 13,
            "total_progression": 48,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8664,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "crosses_attempted": 2.6,
            "duel_win_rate": 0.329,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
            "numerical_situation": "1v1",
            "opponent_defenders": "Lukáš Horníček",
            "opponent_faced": "Lukáš Horníček",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0874,
            "projected_assists": 0,
            "assist_probability": 0.113,
            "finishing_factor": 1.0778,
            "creation_factor": 0.9421,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.013,
                "expected_assists": 0.0108,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 23,
                "accurate_pass": 16,
                "tackles": 7,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0183,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 29,
                "tackles": 5,
                "tackles_won": 4,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 77,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0559,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 74,
                "rating": 8.8,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6617,
                "expected_assists": 0.008,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 20,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1055,
                "expected_assists": 0.1591,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0141,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2608,
                "expected_assists": 0.1394,
                "total_shots": 2,
                "total_pass": 38,
                "accurate_pass": 25,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0674,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "tackles": 7,
                "tackles_won": 4,
                "clearances": 4,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1865,
            "combined_rank_score": 721.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 574.0,
            "sofascore_rating": 6.8053,
            "sofascore_appearances": 38.0,
            "fifa_rank": 868.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8329,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tyrick Mitchell",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ritsu Doan",
                  "ranking": 1860
                },
                {
                  "player_name": "Unai Elgezabal",
                  "ranking": 1861
                },
                {
                  "player_name": "Lee Jun-Gyu",
                  "ranking": 1862
                },
                {
                  "player_name": "Amar Muhsin",
                  "ranking": 1863
                },
                {
                  "player_name": "Claudio González",
                  "ranking": 1864
                }
              ],
              "lower": [
                {
                  "player_name": "Bon-cheol Ku",
                  "ranking": 1866
                },
                {
                  "player_name": "Luke Amos",
                  "ranking": 1867
                },
                {
                  "player_name": "Javokhir Sidikov",
                  "ranking": 1868
                },
                {
                  "player_name": "Felipe Vizeu",
                  "ranking": 1869
                },
                {
                  "player_name": "José Miguel Manzaneda",
                  "ranking": 1870
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 43,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 43,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0048,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.0,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 43 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.8928,
                "expected_assists": 0.0895,
                "assists": 0.0821,
                "assist_rate": 0.0821,
                "expected_goals": 0.0888,
                "goals": 0.1011,
                "goal_rate": 0.1011,
                "shots_on_target": 0.2843,
                "total_shots": 1.1146,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.0962,
                "accurate_pass": 22.3599,
                "duels_won": 4.1576,
                "total_long_balls": 3.095,
                "accurate_long_balls": 0.7787,
                "total_own_half_passes": 13.6738,
                "accurate_own_half_passes": 10.7474,
                "total_opp_half_passes": 16.4224,
                "accurate_opp_half_passes": 11.6125,
                "crosses_total": 2.226,
                "crosses_accurate": 0.3732,
                "touches": 53.4728,
                "possession_lost": 13.6839,
                "dispossessed": 0.7893,
                "duels_lost": 3.1649,
                "aerial_won": 0.8146,
                "aerial_lost": 0.7891,
                "interceptions": 0.525,
                "tackles_won": 1.7044,
                "tackles": 2.6362,
                "clearances": 2.34,
                "total_contest": 0.8155,
                "won_contest": 0.3457,
                "challenges_lost": 0.6375,
                "fouls": 0.5133,
                "fouls_drawn": 0.3611,
                "blocks": 0.2644,
                "big_chances_created": 0.1874,
                "big_chances_missed": 0.166,
                "xgot": 0.1417,
                "ball_carries": 13.0001,
                "total_progression": 47.7699,
                "progressive_carries": 1.6726,
                "shots_off_target": 0.8302
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 8.8
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.8446,
                  "creative_index": 0.3479,
                  "expectedGoals": 0.1106,
                  "expectedAssists": 0.0589,
                  "onTargetScoringAttempt": 0.3226
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8928325772285461,
                    "model_output": 0.8928,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1286
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0653
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0647
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0624
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0353
                        }
                      ],
                      "others": -0.0237,
                      "total": 0.8928,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.135515
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.066476
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.065872
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.063453
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.03778
                        }
                      ],
                      "others_margin": -0.026218
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.08951962739229202,
                    "model_output": 0.0895,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0128
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0113
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0109
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0048
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0041
                        }
                      ],
                      "others": -0.0088,
                      "total": 0.0895,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.139039
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.108646
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.104784
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.049218
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.042962
                        }
                      ],
                      "others_margin": -0.093895
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08214052021503448,
                    "model_output": 0.0821,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.007
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0069
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0062
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0053
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0096,
                      "total": 0.0821,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086188
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.085044
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.070378
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.056461
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.052499
                        }
                      ],
                      "others_margin": -0.110116
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08880607783794403,
                    "model_output": 0.0888,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0147
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0145
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0116
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0049
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0046
                        }
                      ],
                      "others": -0.0075,
                      "total": 0.0888,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.169109
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.167501
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.116309
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.047057
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.046668
                        }
                      ],
                      "others_margin": -0.082358
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.10105906426906586,
                    "model_output": 0.1011,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0121
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0125
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.012
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0116
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.01,
                      "total": 0.1011,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.117075
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.107821
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.103133
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.100145
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.092005
                        }
                      ],
                      "others_margin": -0.095541
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.284324586391449,
                    "model_output": 0.2843,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.056
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0385
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0291
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0182
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0083
                        }
                      ],
                      "others": -0.0414,
                      "total": 0.2843,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.189821
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.134214
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.090825
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.055826
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.025794
                        }
                      ],
                      "others_margin": -0.135785
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.1145570278167725,
                    "model_output": 1.1146,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1439
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.048
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0288
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0283
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": -0.022
                        }
                      ],
                      "others": -0.0069,
                      "total": 1.1146,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.143879
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.047984
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.028816
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.028283
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": -0.022035
                        }
                      ],
                      "others_margin": -0.006867
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.832864284515381,
                    "model_output": 6.8329,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0288
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0244
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0117
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0101
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.0123,
                      "total": 6.8329,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.028791
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.024439
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.011726
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.010149
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.009715
                        }
                      ],
                      "others_margin": -0.012223
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 43,
                  "role_matches": 41,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0048, quality 0.660)",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.0899,
                "assists": 0.0825,
                "assist_rate": 0.0825,
                "expected_goals": 0.0892,
                "goals": 0.1015,
                "goal_rate": 0.1015,
                "shots_on_target": 0.2857,
                "total_shots": 1.1199,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2367,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.8185,
                "aerial_lost": 0.7929,
                "interceptions": 0.5275,
                "tackles_won": 1.7126,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5158,
                "fouls_drawn": 0.3628,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1668,
                "xgot": 0.1424,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.8342
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.0048,
                "reference_quality": 0.505,
                "history_matches": 43,
                "history_shrink": 0.1042,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0090)",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.0899,
                "assists": 0.0818,
                "assist_rate": 0.0818,
                "expected_goals": 0.0892,
                "goals": 0.1006,
                "goal_rate": 0.1006,
                "shots_on_target": 0.2831,
                "total_shots": 1.1183,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.8185,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1668,
                "xgot": 0.1424,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.8342
              },
              "params": {
                "blend_weight": 0.009,
                "history_matches": 43,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9399,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.7126,
                  "after": 1.7056
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.0899,
                "assists": 0.0818,
                "assist_rate": 0.0818,
                "expected_goals": 0.0892,
                "goals": 0.1006,
                "goal_rate": 0.1006,
                "shots_on_target": 0.2831,
                "total_shots": 1.1183,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.8185,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1668,
                "xgot": 0.1424,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.8342
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.0899,
                "assists": 0.0818,
                "assist_rate": 0.0818,
                "expected_goals": 0.0773,
                "goals": 0.0872,
                "goal_rate": 0.0872,
                "shots_on_target": 0.2453,
                "total_shots": 0.9689,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.9,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1445,
                "xgot": 0.1234,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.7228,
                "duel_xg_multiplier": 0.8664,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.329,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lukáš Horníček",
                "opponent_faced": "Lukáš Horníček",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Lukáš Horníček",
                  "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
                  "duel_win_rate": 0.329,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.8664,
                  "skill_edge": -0.0309,
                  "height_edge": -0.06,
                  "attacker_skill": 0.7379,
                  "defender_skill": 0.8066,
                  "attacker_role": "LWB",
                  "attacker_mv_price_index": 0.7,
                  "defender_adjusted_parts": [
                    {
                      "player": "Lukáš Horníček",
                      "market_value": 25000000,
                      "role": "GK",
                      "price_index": 0.55,
                      "adjusted_quality": 0.8066
                    }
                  ],
                  "xg_override": 0.0773
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.1183,
                  "after": 0.9689
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8342,
                  "after": 0.7228
                },
                {
                  "stat": "aerialWon",
                  "before": 0.8185,
                  "after": 0.9
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2831,
                  "after": 0.2453
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1668,
                  "after": 0.1445
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1424,
                  "after": 0.1234
                },
                {
                  "stat": "goals",
                  "before": 0.1006,
                  "after": 0.0872
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0892,
                  "after": 0.0773
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.0899,
                "assist_rate": 0.0818,
                "assists": 0,
                "expected_goals": 0.0773,
                "goal_rate": 0.0872,
                "goals": 0,
                "shots_on_target": 0.2453,
                "total_shots": 0.9689,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.9,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1445,
                "xgot": 0.1234,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.7228,
                "duel_xg_multiplier": 0.8664,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.329,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lukáš Horníček",
                "opponent_faced": "Lukáš Horníček",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.1199,
                "assist_rate": 0.0818,
                "assists": 0,
                "expected_goals": 0.0915,
                "goal_rate": 0.0872,
                "goals": 0,
                "shots_on_target": 0.2453,
                "total_shots": 0.9689,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.9,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1445,
                "xgot": 0.146,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.7228,
                "duel_xg_multiplier": 0.8664,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.329,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lukáš Horníček",
                "opponent_faced": "Lukáš Horníček",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0778,
                "creation_factor": 0.9421
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0773,
                  "after": 0.0915
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0899,
                  "after": 0.1199
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.1199,
                "assist_rate": 0.0818,
                "assists": 0,
                "expected_goals": 0.0915,
                "goal_rate": 0.0872,
                "goals": 0,
                "shots_on_target": 0.2453,
                "total_shots": 0.9689,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.9,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1445,
                "xgot": 0.146,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.7228,
                "duel_xg_multiplier": 0.8664,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.329,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lukáš Horníček",
                "opponent_faced": "Lukáš Horníček",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0778,
                "creation_factor": 0.9421,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1865,
                "fifa_rank": 868.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.1199,
                "assist_rate": 0.0818,
                "assists": 0,
                "expected_goals": 0.0915,
                "goal_rate": 0.0872,
                "goals": 0,
                "shots_on_target": 0.2453,
                "total_shots": 0.9689,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.9,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1445,
                "xgot": 0.146,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.7228,
                "duel_xg_multiplier": 0.8664,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.329,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lukáš Horníček",
                "opponent_faced": "Lukáš Horníček",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0874,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0778,
                "creation_factor": 0.9421,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0874,
                "goal_rate": 0.0872,
                "scorer_weight": 0.0986,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0597,
                "finishing_factor": 1.0778,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.8971,
                "expected_assists": 0.1199,
                "assist_rate": 0.0818,
                "assists": 0,
                "expected_goals": 0.0915,
                "goal_rate": 0.0872,
                "goals": 0,
                "shots_on_target": 0.2453,
                "total_shots": 0.9689,
                "rating": 6.8329,
                "minutes": 84.59,
                "total_pass": 30.2407,
                "accurate_pass": 22.4672,
                "duels_won": 4.1776,
                "total_long_balls": 3.1099,
                "accurate_long_balls": 0.7824,
                "total_own_half_passes": 13.7394,
                "accurate_own_half_passes": 10.799,
                "total_opp_half_passes": 16.5012,
                "accurate_opp_half_passes": 11.6682,
                "crosses_total": 2.2377,
                "crosses_accurate": 0.375,
                "touches": 53.7295,
                "possession_lost": 13.7496,
                "dispossessed": 0.7931,
                "duels_lost": 3.1801,
                "aerial_won": 0.9,
                "aerial_lost": 0.7929,
                "interceptions": 0.527,
                "tackles_won": 1.7056,
                "tackles": 2.6489,
                "clearances": 2.3512,
                "total_contest": 0.8194,
                "won_contest": 0.3474,
                "challenges_lost": 0.6406,
                "fouls": 0.5196,
                "fouls_drawn": 0.3595,
                "blocks": 0.2657,
                "big_chances_created": 0.1883,
                "big_chances_missed": 0.1445,
                "xgot": 0.146,
                "ball_carries": 13.0625,
                "total_progression": 47.9992,
                "progressive_carries": 1.6806,
                "shots_off_target": 0.7228,
                "duel_xg_multiplier": 0.8664,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.329,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lukáš Horníček",
                "opponent_faced": "Lukáš Horníček",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0874,
                "projected_assists": 0,
                "assist_probability": 0.113,
                "finishing_factor": 1.0778,
                "creation_factor": 0.9421,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.113,
                "assist_rate": 0.0818,
                "provider_weight": 0.113,
                "squad_weight_total": 0.917,
                "weight_share": 0.1232,
                "creation_factor": 0.9421,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Daichi Kamada": {
          "player_id": 794338,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 18,
          "height": 184,
          "market_value": 10300000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1263,
            "assist_rate": 0.0917,
            "assists": 0,
            "expected_goals": 0.0693,
            "goal_rate": 0.0676,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.813,
            "minutes": 83,
            "total_pass": 37,
            "accurate_pass": 32,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 17,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 49,
            "possession_lost": 8.7035,
            "dispossessed": 0.672,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 2,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0216,
            "ball_carries": 15,
            "total_progression": 52,
            "progressive_carries": 2,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.8309,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "crosses_attempted": 2.4,
            "duel_win_rate": 0.285,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
            "numerical_situation": "1v1",
            "opponent_defenders": "Lewis Hall",
            "opponent_faced": "Lewis Hall",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.067,
            "projected_assists": 0,
            "assist_probability": 0.1186,
            "finishing_factor": 1.0829,
            "creation_factor": 0.9793,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 81,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0088,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 89,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.34,
                "expected_assists": 0.0394,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4208,
                "expected_assists": 0.0342,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 46,
                "accurate_pass": 39,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 84,
                "rating": 7.4,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_assists": 0.0506,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 89,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0081,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 22,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0461,
                "expected_assists": 0.0229,
                "total_shots": 1,
                "total_pass": 36,
                "accurate_pass": 31,
                "tackles": 6,
                "tackles_won": 4,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 10,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2677,
                "total_shots": 0,
                "total_pass": 72,
                "accurate_pass": 67,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0134,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 20,
                "tackles": 2,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1485,
                "expected_assists": 0.1751,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 15,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0712,
                "total_shots": 1,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1213,
            "combined_rank_score": 531.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 199.0,
            "sofascore_rating": 7.2,
            "sofascore_appearances": 2.0,
            "fifa_rank": 863.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.813,
            "source_file": "data/player_rankings.csv",
            "player_name": "Daichi Kamada",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Žan Karničnik",
                  "ranking": 1208
                },
                {
                  "player_name": "Abdiel Ayarza",
                  "ranking": 1209
                },
                {
                  "player_name": "Adrian Șut",
                  "ranking": 1210
                },
                {
                  "player_name": "Christian Nørgaard",
                  "ranking": 1211
                },
                {
                  "player_name": "Omar Alderete",
                  "ranking": 1212
                }
              ],
              "lower": [
                {
                  "player_name": "Marc-André Ter Stegen",
                  "ranking": 1214
                },
                {
                  "player_name": "Estéban Lepaul",
                  "ranking": 1215
                },
                {
                  "player_name": "Asilbek Jumaev",
                  "ranking": 1216
                },
                {
                  "player_name": "Ikboldzhon Malikdzhonov",
                  "ranking": 1217
                },
                {
                  "player_name": "Nicolás Stefanelli",
                  "ranking": 1218
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 33,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 33,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0008,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 33 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.9106,
                "expected_assists": 0.0946,
                "assists": 0.0927,
                "assist_rate": 0.0927,
                "expected_goals": 0.0705,
                "goals": 0.0822,
                "goal_rate": 0.0822,
                "shots_on_target": 0.3109,
                "total_shots": 0.8803,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 36.9943,
                "accurate_pass": 31.7759,
                "duels_won": 4.1347,
                "total_long_balls": 1.9882,
                "accurate_long_balls": 1.1198,
                "total_own_half_passes": 16.2623,
                "accurate_own_half_passes": 15.1709,
                "total_opp_half_passes": 20.732,
                "accurate_opp_half_passes": 16.605,
                "crosses_total": 1.1359,
                "crosses_accurate": 0.2648,
                "touches": 48.8218,
                "possession_lost": 8.6965,
                "dispossessed": 0.6715,
                "duels_lost": 3.4242,
                "aerial_won": 0.3155,
                "aerial_lost": 0.2763,
                "interceptions": 0.458,
                "tackles_won": 1.5303,
                "tackles": 2.1761,
                "clearances": 0.5111,
                "total_contest": 0.9977,
                "won_contest": 0.3651,
                "challenges_lost": 1.413,
                "fouls": 0.439,
                "fouls_drawn": 1.2964,
                "blocks": 0.0133,
                "big_chances_created": 0.2841,
                "big_chances_missed": 0.1788,
                "xgot": 0.022,
                "ball_carries": 15.4138,
                "total_progression": 51.854,
                "progressive_carries": 1.9299,
                "shots_off_target": 0.5694
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1507,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1281,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1089,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.7618,
                  "creative_index": 0.4283,
                  "expectedGoals": 0.0885,
                  "expectedAssists": 0.0923,
                  "onTargetScoringAttempt": 0.1605
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.9105591773986816,
                    "model_output": 0.9106,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1118
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.06
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0396
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0363
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0354
                        }
                      ],
                      "others": 0.0131,
                      "total": 0.9106,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118855
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.061972
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.043186
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.041268
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.040216
                        }
                      ],
                      "others_margin": 0.014474
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.09458112716674805,
                    "model_output": 0.0946,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0107
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0042
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.004
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0034
                        }
                      ],
                      "others": 0.0049,
                      "total": 0.0946,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125111
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.116473
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.050157
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.047684
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.038686
                        }
                      ],
                      "others_margin": 0.0529
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.09273696690797806,
                    "model_output": 0.0927,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0087
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0074
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0066
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0061
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0057
                        }
                      ],
                      "others": 0.0018,
                      "total": 0.0927,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.108319
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.092033
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.075665
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.064875
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.060337
                        }
                      ],
                      "others_margin": 0.0205
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07048103213310242,
                    "model_output": 0.0705,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0143
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0134
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0081
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0043
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0039
                        }
                      ],
                      "others": -0.0163,
                      "total": 0.0705,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.141078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.131773
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.089322
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051122
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.046106
                        }
                      ],
                      "others_margin": -0.20746
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08217483758926392,
                    "model_output": 0.0822,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0111
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0104
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0094
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0062
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0065
                        }
                      ],
                      "others": -0.018,
                      "total": 0.0822,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.120346
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11392
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.101604
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.067928
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.067048
                        }
                      ],
                      "others_margin": -0.199439
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.310897558927536,
                    "model_output": 0.3109,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.052
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0383
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0145
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0092
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0077
                        }
                      ],
                      "others": -0.0244,
                      "total": 0.3109,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.148956
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.10728
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.041897
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.026367
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.022716
                        }
                      ],
                      "others_margin": -0.075742
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8802825808525085,
                    "model_output": 0.8803,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1399
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1036
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0566
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0349
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.029
                        }
                      ],
                      "others": -0.084,
                      "total": 0.8803,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.139902
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.103557
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.056585
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.034874
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.029028
                        }
                      ],
                      "others_margin": -0.084096
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.812966346740723,
                    "model_output": 6.813,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0286
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0208
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0194
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0142
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.039,
                      "total": 6.813,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.028565
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.020778
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.019442
                        },
                        {
                          "name": "rating",
                          "margin": -0.014157
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.012741
                        }
                      ],
                      "others_margin": -0.038908
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 33,
                  "role_matches": 27,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0008, quality 0.526)",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.0947,
                "assists": 0.0928,
                "assist_rate": 0.0928,
                "expected_goals": 0.0705,
                "goals": 0.0822,
                "goal_rate": 0.0822,
                "shots_on_target": 0.3111,
                "total_shots": 0.881,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1368,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 0.3158,
                "aerial_lost": 0.2765,
                "interceptions": 0.4584,
                "tackles_won": 1.5315,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4394,
                "fouls_drawn": 1.2974,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1789,
                "xgot": 0.022,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.5699
              },
              "params": {
                "market_value_eur": 10300000,
                "quality_factor": 0.526,
                "boost_factor": 1.0008,
                "reference_quality": 0.505,
                "history_matches": 33,
                "history_shrink": 0.1316,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0114)",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.0947,
                "assists": 0.0917,
                "assist_rate": 0.0917,
                "expected_goals": 0.0705,
                "goals": 0.0813,
                "goal_rate": 0.0813,
                "shots_on_target": 0.3076,
                "total_shots": 0.8762,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 0.3158,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1789,
                "xgot": 0.022,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.5699
              },
              "params": {
                "blend_weight": 0.0114,
                "history_matches": 33,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9228,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.5315,
                  "after": 1.5509
                },
                {
                  "stat": "totalCross",
                  "before": 1.1368,
                  "after": 1.1449
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.4584,
                  "after": 0.4637
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.0947,
                "assists": 0.0917,
                "assist_rate": 0.0917,
                "expected_goals": 0.0705,
                "goals": 0.0813,
                "goal_rate": 0.0813,
                "shots_on_target": 0.3076,
                "total_shots": 0.8775,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 0.3158,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1789,
                "xgot": 0.022,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.5699
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.0947,
                "assists": 0.0917,
                "assist_rate": 0.0917,
                "expected_goals": 0.0586,
                "goals": 0.0676,
                "goal_rate": 0.0676,
                "shots_on_target": 0.2556,
                "total_shots": 0.7291,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 1.1,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1486,
                "xgot": 0.0183,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.4735,
                "duel_xg_multiplier": 0.8309,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 2.4,
                "duel_win_rate": 0.285,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lewis Hall",
                "opponent_faced": "Lewis Hall",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Lewis Hall",
                  "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                  "duel_win_rate": 0.285,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.8309,
                  "skill_edge": -0.1351,
                  "height_edge": 0.02,
                  "attacker_skill": 0.5761,
                  "defender_skill": 0.8762,
                  "attacker_role": "RWB",
                  "attacker_mv_price_index": 0.7,
                  "defender_adjusted_parts": [
                    {
                      "player": "Lewis Hall",
                      "market_value": 52000000,
                      "role": "LB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.8762
                    }
                  ],
                  "xg_override": 0.0586
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.3158,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 0.8775,
                  "after": 0.7291
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.5699,
                  "after": 0.4735
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3076,
                  "after": 0.2556
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1789,
                  "after": 0.1486
                },
                {
                  "stat": "goals",
                  "before": 0.0813,
                  "after": 0.0676
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0705,
                  "after": 0.0586
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.0947,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.0586,
                "goal_rate": 0.0676,
                "goals": 0,
                "shots_on_target": 0.2556,
                "total_shots": 0.7291,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 1.1,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1486,
                "xgot": 0.0183,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.4735,
                "duel_xg_multiplier": 0.8309,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 2.4,
                "duel_win_rate": 0.285,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lewis Hall",
                "opponent_faced": "Lewis Hall",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.1263,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.0693,
                "goal_rate": 0.0676,
                "goals": 0,
                "shots_on_target": 0.2556,
                "total_shots": 0.7291,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 1.1,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1486,
                "xgot": 0.0216,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.4735,
                "duel_xg_multiplier": 0.8309,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 2.4,
                "duel_win_rate": 0.285,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lewis Hall",
                "opponent_faced": "Lewis Hall",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0829,
                "creation_factor": 0.9793
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0586,
                  "after": 0.0693
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0947,
                  "after": 0.1263
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.1263,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.0693,
                "goal_rate": 0.0676,
                "goals": 0,
                "shots_on_target": 0.2556,
                "total_shots": 0.7291,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 1.1,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1486,
                "xgot": 0.0216,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.4735,
                "duel_xg_multiplier": 0.8309,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 2.4,
                "duel_win_rate": 0.285,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lewis Hall",
                "opponent_faced": "Lewis Hall",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0829,
                "creation_factor": 0.9793,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1213,
                "fifa_rank": 863.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.1263,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.0693,
                "goal_rate": 0.0676,
                "goals": 0,
                "shots_on_target": 0.2556,
                "total_shots": 0.7291,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 1.1,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1486,
                "xgot": 0.0216,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.4735,
                "duel_xg_multiplier": 0.8309,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 2.4,
                "duel_win_rate": 0.285,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lewis Hall",
                "opponent_faced": "Lewis Hall",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.067,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0829,
                "creation_factor": 0.9793,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.067,
                "goal_rate": 0.0676,
                "scorer_weight": 0.075,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0454,
                "finishing_factor": 1.0829,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.9113,
                "expected_assists": 0.1263,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.0693,
                "goal_rate": 0.0676,
                "goals": 0,
                "shots_on_target": 0.2556,
                "total_shots": 0.7291,
                "rating": 6.813,
                "minutes": 83.05,
                "total_pass": 37.0239,
                "accurate_pass": 31.8013,
                "duels_won": 4.138,
                "total_long_balls": 1.9898,
                "accurate_long_balls": 1.1207,
                "total_own_half_passes": 16.2753,
                "accurate_own_half_passes": 15.183,
                "total_opp_half_passes": 20.7486,
                "accurate_opp_half_passes": 16.6183,
                "crosses_total": 1.1449,
                "crosses_accurate": 0.265,
                "touches": 48.8609,
                "possession_lost": 8.7035,
                "dispossessed": 0.672,
                "duels_lost": 3.4269,
                "aerial_won": 1.1,
                "aerial_lost": 0.2765,
                "interceptions": 0.4637,
                "tackles_won": 1.5509,
                "tackles": 2.1778,
                "clearances": 0.5115,
                "total_contest": 0.9985,
                "won_contest": 0.3654,
                "challenges_lost": 1.4141,
                "fouls": 0.4397,
                "fouls_drawn": 1.2984,
                "blocks": 0.0133,
                "big_chances_created": 0.2843,
                "big_chances_missed": 0.1486,
                "xgot": 0.0216,
                "ball_carries": 15.4261,
                "total_progression": 51.8955,
                "progressive_carries": 1.9314,
                "shots_off_target": 0.4735,
                "duel_xg_multiplier": 0.8309,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 2.4,
                "duel_win_rate": 0.285,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "numerical_situation": "1v1",
                "opponent_defenders": "Lewis Hall",
                "opponent_faced": "Lewis Hall",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.067,
                "projected_assists": 0,
                "assist_probability": 0.1186,
                "finishing_factor": 1.0829,
                "creation_factor": 0.9793,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1186,
                "assist_rate": 0.0917,
                "provider_weight": 0.1237,
                "squad_weight_total": 0.917,
                "weight_share": 0.1349,
                "creation_factor": 0.9793,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Adam Wharton": {
          "player_id": 1109771,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 20,
          "height": 182,
          "market_value": 79000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1979,
            "assist_rate": 0.0974,
            "assists": 1,
            "expected_goals": 0.0871,
            "goal_rate": 0.0739,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9579,
            "minutes": 86,
            "total_pass": 43,
            "accurate_pass": 33,
            "duels_won": 5,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 27,
            "accurate_opp_half_passes": 20,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 59,
            "possession_lost": 14.3527,
            "dispossessed": 0.9018,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 2,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0169,
            "ball_carries": 14,
            "total_progression": 52,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9949,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.447,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Nico González",
            "opponent_faced": "Nico González",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0834,
            "projected_assists": 1,
            "assist_probability": 0.1795,
            "finishing_factor": 1.0024,
            "creation_factor": 0.8,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1472,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 22,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.4316,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 42,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0669,
                "expected_assists": 0.2186,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 58,
                "accurate_pass": 44,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 77,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0822,
                "expected_assists": 0.0389,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0061,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 16,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 5,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0678,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.243,
                "total_shots": 0,
                "total_pass": 74,
                "accurate_pass": 60,
                "key_pass": 2,
                "tackles": 2,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 17,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0178,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1296,
                "expected_assists": 0.1477,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 33,
                "key_pass": 4,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0189,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 17,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 699,
            "combined_rank_score": 336.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 288.0,
            "sofascore_rating": 7.0559,
            "sofascore_appearances": 34.0,
            "fifa_rank": 385.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9579,
            "source_file": "data/player_rankings.csv",
            "player_name": "Adam Wharton",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Eui-jeong Park",
                  "ranking": 694
                },
                {
                  "player_name": "Kyeong-min Kim",
                  "ranking": 695
                },
                {
                  "player_name": "Jamal Lewis",
                  "ranking": 696
                },
                {
                  "player_name": "Lasha Dvali",
                  "ranking": 697
                },
                {
                  "player_name": "Haris Hajdarević",
                  "ranking": 698
                }
              ],
              "lower": [
                {
                  "player_name": "Ji-ung Baek",
                  "ranking": 700
                },
                {
                  "player_name": "Robin Le Normand",
                  "ranking": 701
                },
                {
                  "player_name": "Jonathan Villagra",
                  "ranking": 702
                },
                {
                  "player_name": "Bo-seob Kim",
                  "ranking": 703
                },
                {
                  "player_name": "Mateo Retegui",
                  "ranking": 704
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 39,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 39,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0128,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 39 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.3955,
                "expected_assists": 0.1466,
                "assists": 0.0972,
                "assist_rate": 0.0972,
                "expected_goals": 0.073,
                "goals": 0.074,
                "goal_rate": 0.074,
                "shots_on_target": 0.2995,
                "total_shots": 1.1043,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 42.6494,
                "accurate_pass": 33.075,
                "duels_won": 4.4603,
                "total_long_balls": 4.05,
                "accurate_long_balls": 2.0947,
                "total_own_half_passes": 15.6123,
                "accurate_own_half_passes": 13.6789,
                "total_opp_half_passes": 27.0371,
                "accurate_opp_half_passes": 19.3961,
                "crosses_total": 2.2349,
                "crosses_accurate": 0.556,
                "touches": 58.6937,
                "possession_lost": 14.1713,
                "dispossessed": 0.8904,
                "duels_lost": 3.9914,
                "aerial_won": 0.4768,
                "aerial_lost": 0.9238,
                "interceptions": 1.0508,
                "tackles_won": 0.9645,
                "tackles": 2.218,
                "clearances": 1.6415,
                "total_contest": 0.4822,
                "won_contest": 0.3141,
                "challenges_lost": 1.1198,
                "fouls": 0.8924,
                "fouls_drawn": 1.4515,
                "blocks": 0.1574,
                "big_chances_created": 0.4068,
                "big_chances_missed": 0.0,
                "xgot": 0.0142,
                "ball_carries": 14.2753,
                "total_progression": 51.7006,
                "progressive_carries": 0.9174,
                "shots_off_target": 0.8048
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.0542,
                  "creative_index": 0.6675,
                  "expectedGoals": 0.0383,
                  "expectedAssists": 0.1514,
                  "onTargetScoringAttempt": 0.29
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.3955090045928955,
                    "model_output": 1.3955,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1245
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.1281
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0842
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.045
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0464
                        }
                      ],
                      "others": 0.0811,
                      "total": 1.3955,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.131444
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.119368
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.071294
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.036137
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.035919
                        }
                      ],
                      "others_margin": 0.059913
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.14659589529037476,
                    "model_output": 0.1466,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0108
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0113
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0102
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0064
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0063
                        }
                      ],
                      "others": 0.0158,
                      "total": 0.1466,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118784
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.110719
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.090371
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.052848
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.049079
                        }
                      ],
                      "others_margin": 0.114171
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.09716292470693588,
                    "model_output": 0.0972,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0065
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0054
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0056
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0047
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0028
                        }
                      ],
                      "others": 0.002,
                      "total": 0.0972,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.073806
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.057367
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.056298
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.04638
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.029288
                        }
                      ],
                      "others_margin": 0.019238
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0730319544672966,
                    "model_output": 0.073,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.011
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0103
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0056
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0035
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0089,
                      "total": 0.073,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.123818
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115904
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.061632
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.040568
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.032748
                        }
                      ],
                      "others_margin": -0.114079
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07402873039245605,
                    "model_output": 0.074,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0142
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0088
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0083
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0043
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0095,
                      "total": 0.074,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.157666
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.111579
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.105674
                        },
                        {
                          "name": "goals",
                          "margin": 0.05018
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.043485
                        }
                      ],
                      "others_margin": -0.120013
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2995012104511261,
                    "model_output": 0.2995,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0423
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0354
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0178
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0155
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0067
                        }
                      ],
                      "others": -0.0404,
                      "total": 0.2995,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122639
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.101762
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.052471
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.04539
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.019832
                        }
                      ],
                      "others_margin": -0.126387
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.1042588949203491,
                    "model_output": 1.1043,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1413
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0427
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0352
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0215
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0214
                        }
                      ],
                      "others": -0.0629,
                      "total": 1.1043,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.141348
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.042707
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.035199
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.021495
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.021408
                        }
                      ],
                      "others_margin": -0.062948
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.9578962326049805,
                    "model_output": 6.9579,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0757
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0341
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0185
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0164
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0099
                        }
                      ],
                      "others": 0.0112,
                      "total": 6.9579,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.075663
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.034069
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.018512
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.016408
                        },
                        {
                          "name": "rating",
                          "margin": -0.009859
                        }
                      ],
                      "others_margin": 0.011254
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "role_matches": 34,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0128, quality 0.881)",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1485,
                "assists": 0.0984,
                "assist_rate": 0.0984,
                "expected_goals": 0.074,
                "goals": 0.075,
                "goal_rate": 0.075,
                "shots_on_target": 0.3033,
                "total_shots": 1.1184,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2635,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 0.4829,
                "aerial_lost": 0.9356,
                "interceptions": 1.0643,
                "tackles_won": 0.9768,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.9038,
                "fouls_drawn": 1.4701,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0144,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8151
              },
              "params": {
                "market_value_eur": 79000000,
                "quality_factor": 0.8811,
                "boost_factor": 1.0128,
                "reference_quality": 0.505,
                "history_matches": 39,
                "history_shrink": 0.1136,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0098)",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1485,
                "assists": 0.0974,
                "assist_rate": 0.0974,
                "expected_goals": 0.074,
                "goals": 0.0743,
                "goal_rate": 0.0743,
                "shots_on_target": 0.3003,
                "total_shots": 1.1074,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 0.4829,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0144,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8151
              },
              "params": {
                "blend_weight": 0.0098,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9597,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.2635,
                  "after": 2.2459
                },
                {
                  "stat": "totalShots",
                  "before": 1.1184,
                  "after": 1.1074
                },
                {
                  "stat": "fouls",
                  "before": 0.9038,
                  "after": 0.8949
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.0643,
                  "after": 1.0727
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1485,
                "assists": 0.0974,
                "assist_rate": 0.0974,
                "expected_goals": 0.074,
                "goals": 0.0743,
                "goal_rate": 0.0743,
                "shots_on_target": 0.3003,
                "total_shots": 1.1154,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 0.4829,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0144,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8151
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1485,
                "assists": 0.0974,
                "assist_rate": 0.0974,
                "expected_goals": 0.0736,
                "goals": 0.0739,
                "goal_rate": 0.0739,
                "shots_on_target": 0.2988,
                "total_shots": 1.1097,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 1.1,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0143,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8109,
                "duel_xg_multiplier": 0.9949,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.447,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Nico González",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.447,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9949,
                  "skill_edge": 0.0125,
                  "height_edge": -0.016,
                  "attacker_skill": 0.8877,
                  "defender_skill": 0.8599,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Nico González",
                      "market_value": 54000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.8599
                    }
                  ],
                  "xg_override": 0.0736
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.4829,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 1.1154,
                  "after": 1.1097
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1485,
                "assist_rate": 0.0974,
                "assists": 0,
                "expected_goals": 0.0736,
                "goal_rate": 0.0739,
                "goals": 0,
                "shots_on_target": 0.2988,
                "total_shots": 1.1097,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 1.1,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0143,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8109,
                "duel_xg_multiplier": 0.9949,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.447,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1979,
                "assist_rate": 0.0974,
                "assists": 0,
                "expected_goals": 0.0871,
                "goal_rate": 0.0739,
                "goals": 0,
                "shots_on_target": 0.2988,
                "total_shots": 1.1097,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 1.1,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0169,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8109,
                "duel_xg_multiplier": 0.9949,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.447,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0024,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0736,
                  "after": 0.0871
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1485,
                  "after": 0.1979
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 82.0)",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1979,
                "assist_rate": 0.0974,
                "assists": 0,
                "expected_goals": 0.0871,
                "goal_rate": 0.0739,
                "goals": 0,
                "shots_on_target": 0.2988,
                "total_shots": 1.1097,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 1.1,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0169,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8109,
                "duel_xg_multiplier": 0.9949,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.447,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0024,
                "creation_factor": 0.8,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 699,
                "fifa_rank": 385.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1979,
                "assist_rate": 0.0974,
                "assists": 0,
                "expected_goals": 0.0871,
                "goal_rate": 0.0739,
                "goals": 0,
                "shots_on_target": 0.2988,
                "total_shots": 1.1097,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 1.1,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0169,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8109,
                "duel_xg_multiplier": 0.9949,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.447,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0834,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0024,
                "creation_factor": 0.8,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0834,
                "goal_rate": 0.0739,
                "scorer_weight": 0.0873,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0529,
                "finishing_factor": 1.0024,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 1.4134,
                "expected_assists": 0.1979,
                "assist_rate": 0.0974,
                "assists": 1,
                "expected_goals": 0.0871,
                "goal_rate": 0.0739,
                "goals": 0,
                "shots_on_target": 0.2988,
                "total_shots": 1.1097,
                "rating": 6.9579,
                "minutes": 86.37,
                "total_pass": 43.1953,
                "accurate_pass": 33.4984,
                "duels_won": 4.5174,
                "total_long_balls": 4.1018,
                "accurate_long_balls": 2.1215,
                "total_own_half_passes": 15.8121,
                "accurate_own_half_passes": 13.854,
                "total_opp_half_passes": 27.3832,
                "accurate_opp_half_passes": 19.6444,
                "crosses_total": 2.2459,
                "crosses_accurate": 0.5631,
                "touches": 59.445,
                "possession_lost": 14.3527,
                "dispossessed": 0.9018,
                "duels_lost": 4.0425,
                "aerial_won": 1.1,
                "aerial_lost": 0.9356,
                "interceptions": 1.0727,
                "tackles_won": 0.9814,
                "tackles": 2.2464,
                "clearances": 1.6625,
                "total_contest": 0.4884,
                "won_contest": 0.3181,
                "challenges_lost": 1.1341,
                "fouls": 0.8949,
                "fouls_drawn": 1.4745,
                "blocks": 0.1594,
                "big_chances_created": 0.412,
                "big_chances_missed": 0.0,
                "xgot": 0.0169,
                "ball_carries": 14.458,
                "total_progression": 52.3624,
                "progressive_carries": 0.9291,
                "shots_off_target": 0.8109,
                "duel_xg_multiplier": 0.9949,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.447,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0834,
                "projected_assists": 1,
                "assist_probability": 0.1795,
                "finishing_factor": 1.0024,
                "creation_factor": 0.8,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.1795,
                "assist_rate": 0.0974,
                "provider_weight": 0.1583,
                "squad_weight_total": 0.917,
                "weight_share": 0.1727,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Anan Khalaili": {
          "player_id": 1403362,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 25,
          "height": 183,
          "market_value": 24000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1384,
            "assist_rate": 0.0748,
            "assists": 0,
            "expected_goals": 0.108,
            "goal_rate": 0.1266,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8993,
            "minutes": 87,
            "total_pass": 33,
            "accurate_pass": 25,
            "duels_won": 6,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 11,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 13,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 63,
            "possession_lost": 16.7441,
            "dispossessed": 0.0,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 4,
            "clearances": 3,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 3,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0849,
            "ball_carries": 13,
            "total_progression": 73,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8709,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.0,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.362,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Nico González",
            "opponent_faced": "Nico González",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1024,
            "projected_assists": 0,
            "assist_probability": 0.1292,
            "finishing_factor": 1.2498,
            "creation_factor": 0.8114,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0812,
                "expected_assists": 0.0311,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 25,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.199,
                "expected_assists": 0.193,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0194,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 27,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 3,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2241,
                "expected_assists": 0.1362,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 31,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7169,
                "expected_assists": 0.0068,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 24,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 75,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0158,
                "expected_assists": 0.0032,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 23,
                "tackles": 10,
                "tackles_won": 7,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 15,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 35,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1553,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1405,
            "combined_rank_score": 580.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 91.0,
            "sofascore_rating": 7.5,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1070.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8993,
            "source_file": "data/player_rankings.csv",
            "player_name": "Anan Khalaili",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Rayan",
                  "ranking": 1400
                },
                {
                  "player_name": "Amir Rrahmani",
                  "ranking": 1401
                },
                {
                  "player_name": "Josep Chavarría",
                  "ranking": 1402
                },
                {
                  "player_name": "Abde",
                  "ranking": 1403
                },
                {
                  "player_name": "Troy Parrott",
                  "ranking": 1404
                }
              ],
              "lower": [
                {
                  "player_name": "Guillermo May",
                  "ranking": 1406
                },
                {
                  "player_name": "Pubill",
                  "ranking": 1407
                },
                {
                  "player_name": "Bozhidar Kraev",
                  "ranking": 1408
                },
                {
                  "player_name": "Aïssa Mandi",
                  "ranking": 1409
                },
                {
                  "player_name": "Anderson Talisca",
                  "ranking": 1410
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.575,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.575,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0245,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 110.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.82,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.08
            },
            "rationale": "XGBoost regressor (M_service) evaluated 5 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.08, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.862,
                "expected_assists": 0.1013,
                "assists": 0.075,
                "assist_rate": 0.075,
                "expected_goals": 0.1023,
                "goals": 0.1457,
                "goal_rate": 0.1457,
                "shots_on_target": 0.3858,
                "total_shots": 1.143,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 32.3202,
                "accurate_pass": 23.9485,
                "duels_won": 6.2196,
                "total_long_balls": 4.482,
                "accurate_long_balls": 2.3609,
                "total_own_half_passes": 14.0727,
                "accurate_own_half_passes": 11.2183,
                "total_opp_half_passes": 18.2475,
                "accurate_opp_half_passes": 12.7302,
                "crosses_total": 2.3444,
                "crosses_accurate": 0.0,
                "touches": 61.5361,
                "possession_lost": 16.3437,
                "dispossessed": 0.0,
                "duels_lost": 5.2599,
                "aerial_won": 1.1396,
                "aerial_lost": 0.6993,
                "interceptions": 1.1527,
                "tackles_won": 2.1163,
                "tackles": 3.7685,
                "clearances": 3.034,
                "total_contest": 2.3925,
                "won_contest": 1.1187,
                "challenges_lost": 2.5136,
                "fouls": 0.7733,
                "fouls_drawn": 0.1927,
                "blocks": 0.2267,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4935,
                "xgot": 0.0805,
                "ball_carries": 12.943,
                "total_progression": 71.2621,
                "progressive_carries": 1.6993,
                "shots_off_target": 0.7572
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 7.5
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.472,
                  "creative_index": 0.2404,
                  "expectedGoals": 0.1936,
                  "expectedAssists": 0.0602,
                  "onTargetScoringAttempt": 0.2292
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8620277047157288,
                    "model_output": 0.862,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1114
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.076
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0717
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0619
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0297
                        }
                      ],
                      "others": -0.0483,
                      "total": 0.862,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118398
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.073425
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.0691
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.063747
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.03212
                        }
                      ],
                      "others_margin": -0.05451
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.10129336267709732,
                    "model_output": 0.1013,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.014
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0109
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0074
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0051
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0078,
                      "total": 0.1013,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.150729
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.103955
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.06447
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.043969
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.035452
                        }
                      ],
                      "others_margin": -0.07342
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07497298717498779,
                    "model_output": 0.075,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": -0.0065
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0063
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0065
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0062
                        }
                      ],
                      "others": -0.0167,
                      "total": 0.075,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": -0.079282
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.077133
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.073318
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.067334
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.065439
                        }
                      ],
                      "others_margin": -0.201286
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10227874666452408,
                    "model_output": 0.1023,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0289
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0143
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0136
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.009
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0088
                        }
                      ],
                      "others": -0.0215,
                      "total": 0.1023,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.26711
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.1094
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.103816
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.074952
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.073864
                        }
                      ],
                      "others_margin": -0.191741
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14574623107910156,
                    "model_output": 0.1457,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0338
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.027
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0215
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0137
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0136
                        }
                      ],
                      "others": 0.0087,
                      "total": 0.1457,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.297237
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.186968
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.145535
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.094999
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.09471
                        }
                      ],
                      "others_margin": 0.061567
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3857687711715698,
                    "model_output": 0.3858,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0852
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0619
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0596
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.058
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0275
                        }
                      ],
                      "others": -0.0594,
                      "total": 0.3858,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.233407
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.140852
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119109
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.115704
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.059846
                        }
                      ],
                      "others_margin": -0.143297
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.1430017948150635,
                    "model_output": 1.143,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.2685
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1366
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.071
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0506
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.048
                        }
                      ],
                      "others": -0.179,
                      "total": 1.143,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.268496
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.136633
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.070998
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.050578
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.048034
                        }
                      ],
                      "others_margin": -0.17905
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8993024826049805,
                    "model_output": 6.8993,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0668
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.027
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0161
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0147
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0109
                        }
                      ],
                      "others": -0.0529,
                      "total": 6.8993,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.066757
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.027031
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016094
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.014727
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.010888
                        }
                      ],
                      "others_margin": -0.052877
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 5,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0245, quality 0.669)",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1038,
                "assists": 0.0768,
                "assist_rate": 0.0768,
                "expected_goals": 0.1048,
                "goals": 0.1493,
                "goal_rate": 0.1493,
                "shots_on_target": 0.3952,
                "total_shots": 1.171,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4018,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1675,
                "aerial_lost": 0.7164,
                "interceptions": 1.1809,
                "tackles_won": 2.1681,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.7922,
                "fouls_drawn": 0.1974,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5056,
                "xgot": 0.0825,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.7758
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0245,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0260)",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1038,
                "assists": 0.0748,
                "assist_rate": 0.0748,
                "expected_goals": 0.1048,
                "goals": 0.1454,
                "goal_rate": 0.1454,
                "shots_on_target": 0.3849,
                "total_shots": 1.1611,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1675,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5056,
                "xgot": 0.0825,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.7758
              },
              "params": {
                "blend_weight": 0.026,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9638,
                "prior_reliability": 0.08,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 2.1681,
                  "after": 2.2997
                },
                {
                  "stat": "totalCross",
                  "before": 2.4018,
                  "after": 2.4855
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1809,
                  "after": 1.2128
                },
                {
                  "stat": "fouls",
                  "before": 0.7922,
                  "after": 0.8134
                },
                {
                  "stat": "wasFouled",
                  "before": 0.1974,
                  "after": 0.2131
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3952,
                  "after": 0.3849
                },
                {
                  "stat": "totalShots",
                  "before": 1.171,
                  "after": 1.1611
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1038,
                "assists": 0.0748,
                "assist_rate": 0.0748,
                "expected_goals": 0.1048,
                "goals": 0.1454,
                "goal_rate": 0.1454,
                "shots_on_target": 0.3849,
                "total_shots": 1.1611,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1675,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5056,
                "xgot": 0.0825,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.7758
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1038,
                "assists": 0.0748,
                "assist_rate": 0.0748,
                "expected_goals": 0.0913,
                "goals": 0.1266,
                "goal_rate": 0.1266,
                "shots_on_target": 0.3352,
                "total_shots": 1.0112,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4403,
                "xgot": 0.0718,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.6756,
                "duel_xg_multiplier": 0.8709,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.362,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Nico González",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.362,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.8709,
                  "skill_edge": -0.0758,
                  "height_edge": -0.012,
                  "attacker_skill": 0.6914,
                  "defender_skill": 0.8599,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Nico González",
                      "market_value": 54000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.8599
                    }
                  ],
                  "xg_override": 0.0913
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.1611,
                  "after": 1.0112
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7758,
                  "after": 0.6756
                },
                {
                  "stat": "aerialWon",
                  "before": 1.1675,
                  "after": 1.1
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.5056,
                  "after": 0.4403
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3849,
                  "after": 0.3352
                },
                {
                  "stat": "goals",
                  "before": 0.1454,
                  "after": 0.1266
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1048,
                  "after": 0.0913
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0825,
                  "after": 0.0718
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1038,
                "assist_rate": 0.0748,
                "assists": 0,
                "expected_goals": 0.0913,
                "goal_rate": 0.1266,
                "goals": 0,
                "shots_on_target": 0.3352,
                "total_shots": 1.0112,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4403,
                "xgot": 0.0718,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.6756,
                "duel_xg_multiplier": 0.8709,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.362,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1384,
                "assist_rate": 0.0748,
                "assists": 0,
                "expected_goals": 0.108,
                "goal_rate": 0.1266,
                "goals": 0,
                "shots_on_target": 0.3352,
                "total_shots": 1.0112,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4403,
                "xgot": 0.0849,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.6756,
                "duel_xg_multiplier": 0.8709,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.362,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2498,
                "creation_factor": 0.8114
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0913,
                  "after": 0.108
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1038,
                  "after": 0.1384
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 78.0)",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1384,
                "assist_rate": 0.0748,
                "assists": 0,
                "expected_goals": 0.108,
                "goal_rate": 0.1266,
                "goals": 0,
                "shots_on_target": 0.3352,
                "total_shots": 1.0112,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4403,
                "xgot": 0.0849,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.6756,
                "duel_xg_multiplier": 0.8709,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.362,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2498,
                "creation_factor": 0.8114,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1405,
                "fifa_rank": 1070.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1384,
                "assist_rate": 0.0748,
                "assists": 0,
                "expected_goals": 0.108,
                "goal_rate": 0.1266,
                "goals": 0,
                "shots_on_target": 0.3352,
                "total_shots": 1.0112,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4403,
                "xgot": 0.0849,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.6756,
                "duel_xg_multiplier": 0.8709,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.362,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1024,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2498,
                "creation_factor": 0.8114,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1024,
                "goal_rate": 0.1266,
                "scorer_weight": 0.135,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0817,
                "finishing_factor": 1.2498,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.8831,
                "expected_assists": 0.1384,
                "assist_rate": 0.0748,
                "assists": 0,
                "expected_goals": 0.108,
                "goal_rate": 0.1266,
                "goals": 0,
                "shots_on_target": 0.3352,
                "total_shots": 1.0112,
                "rating": 6.8993,
                "minutes": 86.74,
                "total_pass": 33.112,
                "accurate_pass": 24.5352,
                "duels_won": 6.372,
                "total_long_balls": 4.5918,
                "accurate_long_balls": 2.4187,
                "total_own_half_passes": 14.4175,
                "accurate_own_half_passes": 11.4931,
                "total_opp_half_passes": 18.6946,
                "accurate_opp_half_passes": 13.0421,
                "crosses_total": 2.4855,
                "crosses_accurate": 0.0,
                "touches": 63.0437,
                "possession_lost": 16.7441,
                "dispossessed": 0.0,
                "duels_lost": 5.3888,
                "aerial_won": 1.1,
                "aerial_lost": 0.7164,
                "interceptions": 1.2128,
                "tackles_won": 2.2997,
                "tackles": 3.8608,
                "clearances": 3.1083,
                "total_contest": 2.4511,
                "won_contest": 1.1461,
                "challenges_lost": 2.5752,
                "fouls": 0.8134,
                "fouls_drawn": 0.2131,
                "blocks": 0.2323,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4403,
                "xgot": 0.0849,
                "ball_carries": 13.2601,
                "total_progression": 73.008,
                "progressive_carries": 1.7409,
                "shots_off_target": 0.6756,
                "duel_xg_multiplier": 0.8709,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.362,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Nico González",
                "opponent_faced": "Nico González",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1024,
                "projected_assists": 0,
                "assist_probability": 0.1292,
                "finishing_factor": 1.2498,
                "creation_factor": 0.8114,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1292,
                "assist_rate": 0.0748,
                "provider_weight": 0.1123,
                "squad_weight_total": 0.917,
                "weight_share": 0.1225,
                "creation_factor": 0.8114,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Axel Disasi": {
          "player_id": 827243,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 190,
          "market_value": 15500000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7084,
            "minutes": 82,
            "total_pass": 39,
            "accurate_pass": 34,
            "duels_won": 3,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 26,
            "accurate_own_half_passes": 25,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 50,
            "possession_lost": 6.4039,
            "dispossessed": 0.3553,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0304,
            "expected_assists": 0.0127,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0245,
            "ball_carries": 14,
            "total_progression": 50,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 2.1,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.595,
            "opponent_faced": "Joelinton",
            "pressing_zone": "LW vs CB",
            "matchup_zone": "LW vs CB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0299,
            "projected_assists": 0,
            "assist_probability": 0.0126,
            "finishing_factor": 0.8,
            "creation_factor": 0.8403,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 34,
                "rating": 5.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 22,
                "interceptions": 2,
                "clearances": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0443,
                "total_shots": 0,
                "total_pass": 60,
                "accurate_pass": 53,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 4,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 8,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 16,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023968,
              "match_date": "2026-05-24",
              "home_team": "West Ham United",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0066,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 24,
                "interceptions": 2,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 40,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 85,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 23,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023945,
              "match_date": "2026-05-02",
              "home_team": "Brentford",
              "away_team": "West Ham United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 32,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0038,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 31,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025034,
              "match_date": "2026-04-20",
              "home_team": "Crystal Palace",
              "away_team": "West Ham United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 34,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 10,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025029,
              "match_date": "2026-04-10",
              "home_team": "West Ham United",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 36,
                "tackles": 3,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3065,
            "combined_rank_score": 1028.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 14.0,
            "fifa_rank": 1415.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7084,
            "source_file": "data/player_rankings.csv",
            "player_name": "Axel Disasi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Marco Palestra",
                  "ranking": 3060
                },
                {
                  "player_name": "Michael Gregoritsch",
                  "ranking": 3061
                },
                {
                  "player_name": "Ricardo Pepi",
                  "ranking": 3062
                },
                {
                  "player_name": "Joakim Mæhle",
                  "ranking": 3063
                },
                {
                  "player_name": "Jarell Quansah",
                  "ranking": 3064
                }
              ],
              "lower": [
                {
                  "player_name": "Konstantinos Karetsas",
                  "ranking": 3066
                },
                {
                  "player_name": "İlkay Gündoğan",
                  "ranking": 3067
                },
                {
                  "player_name": "Amine Adli",
                  "ranking": 3068
                },
                {
                  "player_name": "Arnaud Kalimuendo",
                  "ranking": 3069
                },
                {
                  "player_name": "Karl Darlow",
                  "ranking": 3070
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 17,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 17,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0054,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 16.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "XGBoost regressor (D_service) evaluated 17 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.01, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0522,
                "tackles": 1.6067,
                "tackles_won": 0.9534,
                "clearances": 4.2247,
                "aerial_won": 1.4617,
                "total_shots": 0.3016,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 38.9783,
                "accurate_pass": 33.6896,
                "duels_won": 3.0166,
                "total_long_balls": 5.3394,
                "accurate_long_balls": 2.3003,
                "total_own_half_passes": 25.7552,
                "accurate_own_half_passes": 24.6194,
                "total_opp_half_passes": 13.2232,
                "accurate_opp_half_passes": 9.0703,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 49.778,
                "possession_lost": 6.3695,
                "dispossessed": 0.3534,
                "duels_lost": 2.1955,
                "aerial_lost": 0.9747,
                "total_contest": 0.2416,
                "won_contest": 0.2416,
                "ball_recovery": 3.1763,
                "challenges_lost": 0.3925,
                "fouls": 0.4748,
                "fouls_drawn": 0.1862,
                "blocks": 0.8139,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0256,
                "expected_assists": 0.0094,
                "shots_on_target": 0.0713,
                "big_chances_created": 0.0,
                "xgot": 0.0206,
                "ball_carries": 13.8049,
                "total_progression": 49.8273,
                "progressive_carries": 0.5913,
                "key_pass": 0.1544,
                "shots_off_target": 0.2303
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 34.0,
                    "is_starting": true,
                    "weight": 0.1601,
                    "rating": 5.2
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1361,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.1157,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0983,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0836,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Arsenal",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.071,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0604,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0513,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-04-20",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0436,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-04-10",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0371,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 17.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.8849,
                  "aerialWon": 1.1394,
                  "totalClearance_p90": 3.9523,
                  "totalTackle": 1.2935,
                  "totalPass": 35.3246
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0522066354751587,
                    "model_output": 1.0522,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1089
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0759
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0438
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0095
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0338,
                      "total": 1.0522,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.119537
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.075586
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.041221
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.008693
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.008577
                        }
                      ],
                      "others_margin": -0.031571
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.6067417860031128,
                    "model_output": 1.6067,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1892
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0574
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0458
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0388
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0266
                        }
                      ],
                      "others": 0.0774,
                      "total": 1.6067,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127279
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.035615
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.02833
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.02461
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.017274
                        }
                      ],
                      "others_margin": 0.049439
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.95339035987854,
                    "model_output": 0.9534,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1099
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0386
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0318
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0307
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0258
                        }
                      ],
                      "others": 0.0546,
                      "total": 0.9534,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120979
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.040878
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.035
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.03378
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.028329
                        }
                      ],
                      "others_margin": 0.05913
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.2247114181518555,
                    "model_output": 4.2247,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4751
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.4721
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3545
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1745
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.1479
                        }
                      ],
                      "others": -0.1418,
                      "total": 4.2247,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12897
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.113537
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.084019
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.042247
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.034451
                        }
                      ],
                      "others_margin": -0.033019
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4617469310760498,
                    "model_output": 1.4617,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.1849
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1747
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0984
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0426
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0392
                        }
                      ],
                      "others": 0.0733,
                      "total": 1.4617,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.143587
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.136215
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.069239
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.029422
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.027854
                        }
                      ],
                      "others_margin": 0.051488
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3016054034233093,
                    "model_output": 0.3016,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1136
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0516
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0169
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0158
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0658,
                      "total": 0.3016,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.113584
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.051558
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.016942
                        },
                        {
                          "name": "rating",
                          "margin": -0.015813
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.009002
                        }
                      ],
                      "others_margin": -0.065744
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.708393096923828,
                    "model_output": 6.7084,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0303
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0205
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0118
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0114
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0108
                        }
                      ],
                      "others": 0.0081,
                      "total": 6.7084,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.030296
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.02051
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011845
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011413
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.010843
                        }
                      ],
                      "others_margin": 0.00817
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 17,
                  "role_matches": 16,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0054, quality 0.585)",
              "stats": {
                "interceptions": 1.0579,
                "tackles": 1.6154,
                "tackles_won": 0.9585,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3032,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4774,
                "fouls_drawn": 0.1872,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0257,
                "expected_assists": 0.0095,
                "shots_on_target": 0.0717,
                "big_chances_created": 0.0,
                "xgot": 0.0207,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315
              },
              "params": {
                "market_value_eur": 15500000,
                "quality_factor": 0.5846,
                "boost_factor": 1.0054,
                "reference_quality": 0.505,
                "history_matches": 17,
                "history_shrink": 0.2273,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0020)",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3026,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0257,
                "expected_assists": 0.0095,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0207,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315
              },
              "params": {
                "blend_weight": 0.002,
                "history_matches": 17,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9062,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.4774,
                  "after": 0.4854
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3031,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0257,
                "expected_assists": 0.0095,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0207,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3031,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0257,
                "expected_assists": 0.0095,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0207,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.595,
                "opponent_faced": "Joelinton",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Joelinton",
                  "matchup_zone": "LW vs CB"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3031,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0257,
                "expected_assists": 0.0095,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0207,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.595,
                "opponent_faced": "Joelinton",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3031,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0245,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.595,
                "opponent_faced": "Joelinton",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8403
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 77.0)",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3031,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0245,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.595,
                "opponent_faced": "Joelinton",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8403,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3065,
                "fifa_rank": 1415.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3031,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0245,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.595,
                "opponent_faced": "Joelinton",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0299,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8403,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0299,
                "goal_rate": 0.0,
                "scorer_weight": 0.0243,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0147,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.0558,
                "tackles": 1.6154,
                "tackles_won": 0.9566,
                "clearances": 4.2475,
                "aerial_won": 1.4696,
                "total_shots": 0.3031,
                "rating": 6.7084,
                "minutes": 81.56,
                "total_pass": 39.1888,
                "accurate_pass": 33.8715,
                "duels_won": 3.0329,
                "total_long_balls": 5.3682,
                "accurate_long_balls": 2.3127,
                "total_own_half_passes": 25.8943,
                "accurate_own_half_passes": 24.7523,
                "total_opp_half_passes": 13.2946,
                "accurate_opp_half_passes": 9.1193,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 50.0468,
                "possession_lost": 6.4039,
                "dispossessed": 0.3553,
                "duels_lost": 2.2074,
                "aerial_lost": 0.98,
                "total_contest": 0.2429,
                "won_contest": 0.2429,
                "ball_recovery": 3.1935,
                "challenges_lost": 0.3946,
                "fouls": 0.4854,
                "fouls_drawn": 0.1868,
                "blocks": 0.8183,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0716,
                "big_chances_created": 0.0,
                "xgot": 0.0245,
                "ball_carries": 13.8794,
                "total_progression": 50.0964,
                "progressive_carries": 0.5945,
                "key_pass": 0.1552,
                "shots_off_target": 0.2315,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.595,
                "opponent_faced": "Joelinton",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0299,
                "projected_assists": 0,
                "assist_probability": 0.0126,
                "finishing_factor": 0.8,
                "creation_factor": 0.8403,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0126,
                "assist_rate": 0.0,
                "provider_weight": 0.0107,
                "squad_weight_total": 0.917,
                "weight_share": 0.0116,
                "creation_factor": 0.8403,
                "appearance_weight": 1.0,
                "weight_rank": 14,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Chris Richards": {
          "player_id": 931844,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 26,
          "height": 188,
          "market_value": 25000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.7752,
            "minutes": 90,
            "total_pass": 48,
            "accurate_pass": 42,
            "duels_won": 4,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 31,
            "accurate_own_half_passes": 29,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 13,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 67,
            "possession_lost": 9.9239,
            "dispossessed": 0.3692,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0123,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.1004,
            "expected_assists": 0.0319,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1059,
            "ball_carries": 17,
            "total_progression": 23,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.783,
            "opponent_faced": "William Osula",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0955,
            "projected_assists": 0,
            "assist_probability": 0.0314,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 48,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 3,
                "clearances": 7,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0594,
                "expected_assists": 0.0188,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 48,
                "accurate_pass": 41,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 5,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0563,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 44,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 9,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.041,
                "expected_assists": 0.0026,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 43,
                "accurate_pass": 36,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.037,
                "expected_assists": 0.0019,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 22,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0038,
                "total_shots": 0,
                "total_pass": 67,
                "accurate_pass": 62,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 29,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1829,
                "expected_assists": 0.0007,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 25,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4259,
                "expected_assists": 0.0989,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 65,
                "accurate_pass": 57,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 9,
                "aerial_won": 11,
                "duels_won": 12,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1160,
            "combined_rank_score": 512.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 3.0,
            "fifa_rank": 688.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7752,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chris Richards",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Vlad Chiricheş",
                  "ranking": 1155
                },
                {
                  "player_name": "Emil Krafth",
                  "ranking": 1156
                },
                {
                  "player_name": "Sidny Lopes Cabral",
                  "ranking": 1157
                },
                {
                  "player_name": "Andreas Christensen",
                  "ranking": 1158
                },
                {
                  "player_name": "Nathan Collins",
                  "ranking": 1159
                }
              ],
              "lower": [
                {
                  "player_name": "Andriy Lunin",
                  "ranking": 1161
                },
                {
                  "player_name": "Lee Joon-Ho",
                  "ranking": 1162
                },
                {
                  "player_name": "Seung-beom Ko",
                  "ranking": 1163
                },
                {
                  "player_name": "Seung-hyeon Cha",
                  "ranking": 1164
                },
                {
                  "player_name": "Mats Wieffer",
                  "ranking": 1165
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 38,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 38,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.006,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 38 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0834,
                "tackles": 1.3737,
                "tackles_won": 0.786,
                "clearances": 5.9189,
                "aerial_won": 2.3222,
                "total_shots": 0.5174,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 47.7864,
                "accurate_pass": 41.5419,
                "duels_won": 4.1339,
                "total_long_balls": 4.8938,
                "accurate_long_balls": 1.6517,
                "total_own_half_passes": 30.8812,
                "accurate_own_half_passes": 28.3447,
                "total_opp_half_passes": 16.9052,
                "accurate_opp_half_passes": 13.1972,
                "crosses_total": 0.5019,
                "crosses_accurate": 0.1139,
                "touches": 66.7073,
                "possession_lost": 9.8647,
                "dispossessed": 0.367,
                "duels_lost": 3.6746,
                "aerial_lost": 2.1911,
                "total_contest": 0.486,
                "won_contest": 0.2012,
                "ball_recovery": 2.8968,
                "challenges_lost": 0.3461,
                "fouls": 0.4857,
                "fouls_drawn": 0.0617,
                "blocks": 0.7272,
                "goals": 0.0123,
                "goal_rate": 0.0123,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0844,
                "expected_assists": 0.0238,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.0014,
                "xgot": 0.089,
                "ball_carries": 16.4977,
                "total_progression": 23.2028,
                "progressive_carries": 0.1422,
                "key_pass": 0.1146,
                "shots_off_target": 0.2501
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 5.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.142,
                  "aerialWon": 2.174,
                  "totalClearance_p90": 6.4235,
                  "totalTackle": 1.3247,
                  "totalPass": 42.8524
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0834038257598877,
                    "model_output": 1.0834,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1142
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.059
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0283
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0237
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0177
                        }
                      ],
                      "others": -0.0168,
                      "total": 1.0834,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125072
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.058998
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.027059
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.022142
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.016177
                        }
                      ],
                      "others_margin": -0.015339
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.3737183809280396,
                    "model_output": 1.3737,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1647
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0426
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0377
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0311
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0288
                        }
                      ],
                      "others": -0.0447,
                      "total": 1.3737,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.111661
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.02774
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.025161
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.021288
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.02013
                        }
                      ],
                      "others_margin": -0.031909
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7860486507415771,
                    "model_output": 0.786,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0992
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0408
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0319
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0262
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0213
                        }
                      ],
                      "others": -0.0474,
                      "total": 0.786,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.109812
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.043761
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.035578
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.030179
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.025295
                        }
                      ],
                      "others_margin": -0.058321
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.918911457061768,
                    "model_output": 5.9189,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.7766
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5669
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.405
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3396
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1406
                        }
                      ],
                      "others": 0.2388,
                      "total": 5.9189,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.202946
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125814
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.081093
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.063268
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.025064
                        }
                      ],
                      "others_margin": 0.041184
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.3222174644470215,
                    "model_output": 2.3222,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.2382
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1976
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1942
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1559
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1255
                        }
                      ],
                      "others": 0.0288,
                      "total": 2.3222,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.15904
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115081
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.101501
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.074642
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.05626
                        }
                      ],
                      "others_margin": 0.012446
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5173799395561218,
                    "model_output": 0.5174,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0647
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0234
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0204
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0116
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0101
                        }
                      ],
                      "others": -0.0229,
                      "total": 0.5174,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.064707
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.023401
                        },
                        {
                          "name": "rating",
                          "margin": -0.020378
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.011607
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.010116
                        }
                      ],
                      "others_margin": -0.022973
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.775174140930176,
                    "model_output": 6.7752,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0229
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0123
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0121
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0117
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0109
                        }
                      ],
                      "others": 0.012,
                      "total": 6.7752,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.022886
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.01227
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012148
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.011652
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.010899
                        }
                      ],
                      "others_margin": 0.012055
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "role_matches": 36,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0060, quality 0.677)",
              "stats": {
                "interceptions": 1.0899,
                "tackles": 1.382,
                "tackles_won": 0.7908,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5205,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.5049,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4886,
                "fouls_drawn": 0.0621,
                "blocks": 0.7316,
                "goals": 0.0124,
                "goal_rate": 0.0124,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0849,
                "expected_assists": 0.0239,
                "shots_on_target": 0.2689,
                "big_chances_created": 0.0014,
                "xgot": 0.0895,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516
              },
              "params": {
                "market_value_eur": 25000000,
                "quality_factor": 0.6773,
                "boost_factor": 1.006,
                "reference_quality": 0.505,
                "history_matches": 38,
                "history_shrink": 0.1163,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0101)",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5203,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goals": 0.0123,
                "goal_rate": 0.0123,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0849,
                "expected_assists": 0.0239,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.0895,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516
              },
              "params": {
                "blend_weight": 0.0101,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9998,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.0899,
                  "after": 1.0991
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7908,
                  "after": 0.7979
                },
                {
                  "stat": "totalCross",
                  "before": 0.5049,
                  "after": 0.4998
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5228,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goals": 0.0123,
                "goal_rate": 0.0123,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0849,
                "expected_assists": 0.0239,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.0895,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5228,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goals": 0.0123,
                "goal_rate": 0.0123,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0849,
                "expected_assists": 0.0239,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.0895,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.783,
                "opponent_faced": "William Osula",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "William Osula",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5228,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goal_rate": 0.0123,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0849,
                "expected_assists": 0.0239,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.0895,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.783,
                "opponent_faced": "William Osula",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5228,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goal_rate": 0.0123,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1004,
                "expected_assists": 0.0319,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.1059,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.783,
                "opponent_faced": "William Osula",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0849,
                  "after": 0.1004
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0239,
                  "after": 0.0319
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 80.0)",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5228,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goal_rate": 0.0123,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1004,
                "expected_assists": 0.0319,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.1059,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.783,
                "opponent_faced": "William Osula",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1160,
                "fifa_rank": 688.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5228,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goal_rate": 0.0123,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1004,
                "expected_assists": 0.0319,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.1059,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.783,
                "opponent_faced": "William Osula",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0955,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0955,
                "goal_rate": 0.0123,
                "scorer_weight": 0.0803,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0486,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.0991,
                "tackles": 1.382,
                "tackles_won": 0.7979,
                "clearances": 5.9544,
                "aerial_won": 2.3362,
                "total_shots": 0.5228,
                "rating": 6.7752,
                "minutes": 89.98,
                "total_pass": 48.0731,
                "accurate_pass": 41.7912,
                "duels_won": 4.1587,
                "total_long_balls": 4.9232,
                "accurate_long_balls": 1.6616,
                "total_own_half_passes": 31.0665,
                "accurate_own_half_passes": 28.5148,
                "total_opp_half_passes": 17.0066,
                "accurate_opp_half_passes": 13.2764,
                "crosses_total": 0.4998,
                "crosses_accurate": 0.1146,
                "touches": 67.1075,
                "possession_lost": 9.9239,
                "dispossessed": 0.3692,
                "duels_lost": 3.6966,
                "aerial_lost": 2.2042,
                "total_contest": 0.4889,
                "won_contest": 0.2024,
                "ball_recovery": 2.9142,
                "challenges_lost": 0.3482,
                "fouls": 0.4837,
                "fouls_drawn": 0.0615,
                "blocks": 0.7316,
                "goal_rate": 0.0123,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1004,
                "expected_assists": 0.0319,
                "shots_on_target": 0.2712,
                "big_chances_created": 0.0014,
                "xgot": 0.1059,
                "ball_carries": 16.5967,
                "total_progression": 23.342,
                "progressive_carries": 0.1431,
                "key_pass": 0.1153,
                "shots_off_target": 0.2516,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.783,
                "opponent_faced": "William Osula",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0955,
                "projected_assists": 0,
                "assist_probability": 0.0314,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0314,
                "assist_rate": 0.0,
                "provider_weight": 0.0255,
                "squad_weight_total": 0.917,
                "weight_share": 0.0278,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jaydee Canvot": {
          "player_id": 1471671,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 188,
          "market_value": 32000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.7732,
            "minutes": 89,
            "total_pass": 53,
            "accurate_pass": 47,
            "duels_won": 4,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 33,
            "accurate_own_half_passes": 30,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 17,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 68,
            "possession_lost": 7.8951,
            "dispossessed": 0.3897,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0588,
            "expected_assists": 0.0392,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0243,
            "ball_carries": 19,
            "total_progression": 90,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "William Osula",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0571,
            "projected_assists": 0,
            "assist_probability": 0.0384,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 90,
                "rating": 5.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 49,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0066,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1186,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 43,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 3,
                "clearances": 6,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 44,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0046,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 45,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0473,
                "expected_assists": 0.0143,
                "total_shots": 1,
                "total_pass": 86,
                "accurate_pass": 77,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 7,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 34,
                "tackles": 2,
                "clearances": 8,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3127,
                "expected_assists": 0.0399,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 67,
                "accurate_pass": 62,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 7,
                "duels_won": 10,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024023,
              "match_date": "2026-05-03",
              "home_team": "Bournemouth",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 32,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3179,
            "combined_rank_score": 1146.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 526.0,
            "sofascore_rating": 6.8368,
            "sofascore_appearances": 20.0,
            "fifa_rank": 1767.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7732,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jaydee Canvot",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Romain Perraud",
                  "ranking": 3174
                },
                {
                  "player_name": "Marco Bizot",
                  "ranking": 3175
                },
                {
                  "player_name": "Timothy Weah",
                  "ranking": 3176
                },
                {
                  "player_name": "Jordan Teze",
                  "ranking": 3177
                },
                {
                  "player_name": "Charlie Cresswell",
                  "ranking": 3178
                }
              ],
              "lower": [
                {
                  "player_name": "Julio César Enciso",
                  "ranking": 3180
                },
                {
                  "player_name": "Franco Mastantuono",
                  "ranking": 3181
                },
                {
                  "player_name": "Altay Bayındır",
                  "ranking": 3182
                },
                {
                  "player_name": "Daniel Bragança",
                  "ranking": 3183
                },
                {
                  "player_name": "Hákon Arnar Haraldsson",
                  "ranking": 3184
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 24,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 24,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0117,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 24 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1149,
                "tackles": 1.7411,
                "tackles_won": 1.0882,
                "clearances": 4.9885,
                "aerial_won": 1.7863,
                "total_shots": 0.4472,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 52.7296,
                "accurate_pass": 46.7152,
                "duels_won": 4.1714,
                "total_long_balls": 5.1778,
                "accurate_long_balls": 2.4204,
                "total_own_half_passes": 33.112,
                "accurate_own_half_passes": 29.8675,
                "total_opp_half_passes": 19.6176,
                "accurate_opp_half_passes": 16.8477,
                "crosses_total": 0.3574,
                "crosses_accurate": 0.1585,
                "touches": 67.7049,
                "possession_lost": 7.8038,
                "dispossessed": 0.3852,
                "duels_lost": 3.2673,
                "aerial_lost": 1.0122,
                "total_contest": 0.2478,
                "won_contest": 0.0715,
                "ball_recovery": 3.2683,
                "challenges_lost": 1.1366,
                "fouls": 0.5708,
                "fouls_drawn": 0.4024,
                "blocks": 0.7196,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0491,
                "expected_assists": 0.0291,
                "shots_on_target": 0.0598,
                "big_chances_created": 0.0,
                "xgot": 0.0203,
                "ball_carries": 18.5227,
                "total_progression": 88.5183,
                "progressive_carries": 1.0619,
                "key_pass": 0.2674,
                "shots_off_target": 0.3874
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1531,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1301,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1106,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.094,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0799,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0679,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0577,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0491,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0417,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-20",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0355,
                    "rating": 8.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.3159,
                  "aerialWon": 1.6875,
                  "totalClearance_p90": 5.5411,
                  "totalTackle": 1.9574,
                  "totalPass": 51.0762
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.114911675453186,
                    "model_output": 1.1149,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1038
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0657
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0275
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0255
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0195
                        }
                      ],
                      "others": 0.0156,
                      "total": 1.1149,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114333
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.066168
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.02647
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.023894
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.017908
                        }
                      ],
                      "others_margin": 0.014002
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.7410647869110107,
                    "model_output": 1.7411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.182
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0887
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0708
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0692
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0652
                        }
                      ],
                      "others": -0.1287,
                      "total": 1.7411,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122731
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.054754
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.041633
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.039112
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.035507
                        }
                      ],
                      "others_margin": -0.071329
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0882222652435303,
                    "model_output": 1.0882,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1108
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.066
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0696
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0734
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0576
                        }
                      ],
                      "others": -0.0284,
                      "total": 1.0882,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12193
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.066101
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.065304
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.064593
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.050266
                        }
                      ],
                      "others_margin": -0.025702
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.988540172576904,
                    "model_output": 4.9885,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.6362
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5308
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.365
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2871
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2576
                        }
                      ],
                      "others": 0.1904,
                      "total": 4.9885,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.169184
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122086
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.082328
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.065321
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.055189
                        }
                      ],
                      "others_margin": 0.038908
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.7863236665725708,
                    "model_output": 1.7863,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.1755
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1823
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1119
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0735
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0717
                        }
                      ],
                      "others": -0.0636,
                      "total": 1.7863,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.119567
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110663
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.062311
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.040481
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.039529
                        }
                      ],
                      "others_margin": -0.034983
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4472077190876007,
                    "model_output": 0.4472,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0612
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0572
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0171
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0148
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0115
                        }
                      ],
                      "others": -0.0291,
                      "total": 0.4472,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.061186
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.05721
                        },
                        {
                          "name": "rating",
                          "margin": -0.017134
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.014814
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.011504
                        }
                      ],
                      "others_margin": -0.029131
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7732133865356445,
                    "model_output": 6.7732,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0207
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0184
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0139
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0137
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0099
                        }
                      ],
                      "others": 0.0001,
                      "total": 6.7732,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.020746
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.018357
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.013879
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013707
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.009896
                        }
                      ],
                      "others_margin": 0.000195
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 24,
                  "role_matches": 18,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0117, quality 0.732)",
              "stats": {
                "interceptions": 1.128,
                "tackles": 1.7614,
                "tackles_won": 1.101,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4524,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3616,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5775,
                "fouls_drawn": 0.4071,
                "blocks": 0.728,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0497,
                "expected_assists": 0.0294,
                "shots_on_target": 0.0605,
                "big_chances_created": 0.0,
                "xgot": 0.0205,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919
              },
              "params": {
                "market_value_eur": 32000000,
                "quality_factor": 0.732,
                "boost_factor": 1.0117,
                "reference_quality": 0.505,
                "history_matches": 24,
                "history_shrink": 0.1724,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0149)",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0497,
                "expected_assists": 0.0294,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0205,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919
              },
              "params": {
                "blend_weight": 0.0149,
                "history_matches": 24,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9939,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.101,
                  "after": 1.1142
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.128,
                  "after": 1.1186
                },
                {
                  "stat": "fouls",
                  "before": 0.5775,
                  "after": 0.5689
                },
                {
                  "stat": "totalCross",
                  "before": 0.3616,
                  "after": 0.3562
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0497,
                "expected_assists": 0.0294,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0205,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0497,
                "expected_assists": 0.0294,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0205,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919,
                "opponent_faced": "William Osula",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "William Osula",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0497,
                "expected_assists": 0.0294,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0205,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919,
                "opponent_faced": "William Osula",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0588,
                "expected_assists": 0.0392,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0243,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919,
                "opponent_faced": "William Osula",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0497,
                  "after": 0.0588
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0294,
                  "after": 0.0392
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0588,
                "expected_assists": 0.0392,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0243,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919,
                "opponent_faced": "William Osula",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3179,
                "fifa_rank": 1767.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0588,
                "expected_assists": 0.0392,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0243,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919,
                "opponent_faced": "William Osula",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0571,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0571,
                "goal_rate": 0.0,
                "scorer_weight": 0.047,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0285,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.1186,
                "tackles": 1.7614,
                "tackles_won": 1.1142,
                "clearances": 5.0469,
                "aerial_won": 1.8072,
                "total_shots": 0.4531,
                "rating": 6.7732,
                "minutes": 89.45,
                "total_pass": 53.3465,
                "accurate_pass": 47.2618,
                "duels_won": 4.2202,
                "total_long_balls": 5.2384,
                "accurate_long_balls": 2.4487,
                "total_own_half_passes": 33.4994,
                "accurate_own_half_passes": 30.2169,
                "total_opp_half_passes": 19.8471,
                "accurate_opp_half_passes": 17.0448,
                "crosses_total": 0.3562,
                "crosses_accurate": 0.1604,
                "touches": 68.497,
                "possession_lost": 7.8951,
                "dispossessed": 0.3897,
                "duels_lost": 3.3055,
                "aerial_lost": 1.024,
                "total_contest": 0.2507,
                "won_contest": 0.0723,
                "ball_recovery": 3.3065,
                "challenges_lost": 1.1499,
                "fouls": 0.5689,
                "fouls_drawn": 0.4084,
                "blocks": 0.728,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0588,
                "expected_assists": 0.0392,
                "shots_on_target": 0.0596,
                "big_chances_created": 0.0,
                "xgot": 0.0243,
                "ball_carries": 18.7394,
                "total_progression": 89.554,
                "progressive_carries": 1.0743,
                "key_pass": 0.2705,
                "shots_off_target": 0.3919,
                "opponent_faced": "William Osula",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0571,
                "projected_assists": 0,
                "assist_probability": 0.0384,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0384,
                "assist_rate": 0.0,
                "provider_weight": 0.0314,
                "squad_weight_total": 0.917,
                "weight_share": 0.0342,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Walter Benítez": {
          "player_id": 249859,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 44,
          "height": 193,
          "market_value": 3700000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0775,
            "rating": 6.9925,
            "minutes": 90,
            "total_pass": 26,
            "accurate_pass": 17,
            "total_long_balls": 15,
            "accurate_long_balls": 5,
            "touches": 35,
            "clearances": 1,
            "ball_recovery": 6,
            "high_claims": 2,
            "punches": 0.989,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 2,
            "possession_lost": 9.5545,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 12,
            "gk_engine_opponent_lambda": 1.6187,
            "shots_faced": 16.0,
            "expected_saves": 3.91,
            "high_pressure_saves": 1.35,
            "opponent_faced": "William Osula, Yoane Wissa",
            "matchup_zone": "Goalkeeper shot-stopping context",
            "antagonist_source": "formation_fallback",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "finishing_factor": 1.0,
            "creation_factor": 1.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 90,
                "rating": 5.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 20,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 5,
                "goals_prevented": -1.9678
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 23,
                "clearances": 2,
                "ball_recovery": 7,
                "saves": 4,
                "goals_prevented": 1.0625
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 16,
                "clearances": 1,
                "ball_recovery": 4,
                "saves": 2,
                "goals_prevented": 0.8715
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 17,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 3,
                "goals_prevented": 0.8144
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023991,
              "match_date": "2026-03-15",
              "home_team": "Crystal Palace",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 18,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": 0.3586
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1653,
            "combined_rank_score": 672.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1087.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9925,
            "source_file": "data/player_rankings.csv",
            "player_name": "Walter Benítez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Georges Mikautadze",
                  "ranking": 1648
                },
                {
                  "player_name": "Trai Hume",
                  "ranking": 1649
                },
                {
                  "player_name": "Alfonso Pedraza",
                  "ranking": 1650
                },
                {
                  "player_name": "Lukáš Provod",
                  "ranking": 1651
                },
                {
                  "player_name": "Isi Palazón",
                  "ranking": 1652
                }
              ],
              "lower": [
                {
                  "player_name": "Khumoyun Sherbutaev",
                  "ranking": 1654
                },
                {
                  "player_name": "Kuvonchbek Khushvaktov",
                  "ranking": 1655
                },
                {
                  "player_name": "Florian Grillitsch",
                  "ranking": 1656
                },
                {
                  "player_name": "Zakaria Labyad",
                  "ranking": 1657
                },
                {
                  "player_name": "Rodrigo Odriozola",
                  "ranking": 1658
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "G_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "accurateLongBalls",
              "totalOwnHalfPasses",
              "accurateOwnHalfPasses",
              "saves",
              "savedShotsFromInsideTheBox",
              "goodHighClaim",
              "punches",
              "aerialWon",
              "totalKeeperSweeper",
              "accurateKeeperSweeper",
              "totalClearance",
              "ballRecovery",
              "touches",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "goalsPrevented",
              "rating",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.989,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (G_service) evaluated 3 historical appearances across 3 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.00, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.8576,
                "goals_prevented": -0.0784,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.553,
                "accurate_pass": 16.8922,
                "total_long_balls": 14.9329,
                "accurate_long_balls": 5.2721,
                "touches": 35.1059,
                "clearances": 1.0,
                "ball_recovery": 6.3955,
                "high_claims": 1.7191,
                "punches": 1.0,
                "aerial_won": 0.3304,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6696,
                "possession_lost": 9.6608,
                "duels_won": 0.3304,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.7434,
                "accurate_own_half_passes": 11.9008
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-25T10:04:36.867499+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 199,
                    "rows": 6796
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 0.0,
                  "distribution_accuracy": 0.9504,
                  "sweeper_accuracy": 0.0,
                  "goalkeeperValueNormalized": 0.5022,
                  "save_contribution": 3.3199,
                  "accurateKeeperSweeper": 0.0
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.8575797080993652,
                    "model_output": 2.8576,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0415
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0394
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0368
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0362
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0362
                      }
                    ],
                    "decomposition": {
                      "base": 2.9286,
                      "items": [
                        {
                          "name": "goalsPrevented",
                          "contribution": 0.0612
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.051
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0231
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0197
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0185
                        }
                      ],
                      "others": -0.0199,
                      "total": 2.8576,
                      "log_link": true,
                      "margin_base": 1.074537,
                      "item_margins": [
                        {
                          "name": "goalsPrevented",
                          "margin": 0.020695
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.017205
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.007893
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": -0.006792
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.006398
                        }
                      ],
                      "others_margin": -0.006969
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.07835380733013153,
                    "model_output": -0.0784,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "punches",
                        "importance": 0.041
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0398
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0385
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0374
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0356
                      }
                    ],
                    "decomposition": {
                      "base": -0.0166,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0226
                        },
                        {
                          "name": "commanding_index",
                          "contribution": -0.0195
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0191
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0162
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0153
                        }
                      ],
                      "others": 0.0309,
                      "total": -0.0784,
                      "log_link": false,
                      "margin_base": -0.016613,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.022598
                        },
                        {
                          "name": "commanding_index",
                          "margin": -0.019485
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.019064
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.016188
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.01526
                        }
                      ],
                      "others_margin": 0.030853
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.9924540519714355,
                    "model_output": 6.9925,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0429
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0382
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0371
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.036
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0359
                      }
                    ],
                    "decomposition": {
                      "base": 7.0091,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0465
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0174
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.014
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0135
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0098
                        }
                      ],
                      "others": -0.028,
                      "total": 6.9925,
                      "log_link": false,
                      "margin_base": 7.009122,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.046531
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.017357
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.014045
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.01346
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.009812
                        }
                      ],
                      "others_margin": -0.028148
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9890, quality 0.446)",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699
              },
              "params": {
                "market_value_eur": 3700000,
                "quality_factor": 0.4461,
                "boost_factor": 0.989,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699,
                "gk_engine_opponent_lambda": 1.6187,
                "shots_faced": 15.4,
                "expected_saves": 3.77,
                "high_pressure_saves": 1.29,
                "opponent_faced": "William Osula, Yoane Wissa",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "William Osula, Yoane Wissa",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.6187
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699,
                "gk_engine_opponent_lambda": 1.6187,
                "shots_faced": 15.4,
                "expected_saves": 3.77,
                "high_pressure_saves": 1.29,
                "opponent_faced": "William Osula, Yoane Wissa",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699,
                "gk_engine_opponent_lambda": 1.6187,
                "shots_faced": 16.0,
                "expected_saves": 3.91,
                "high_pressure_saves": 1.35,
                "opponent_faced": "William Osula, Yoane Wissa",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 15.4,
                  "after": 16.0
                },
                {
                  "stat": "expected_saves",
                  "before": 3.77,
                  "after": 3.91
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.29,
                  "after": 1.35
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 78.0)",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699,
                "gk_engine_opponent_lambda": 1.6187,
                "shots_faced": 16.0,
                "expected_saves": 3.91,
                "high_pressure_saves": 1.35,
                "opponent_faced": "William Osula, Yoane Wissa",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1653,
                "fifa_rank": 1087.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699,
                "gk_engine_opponent_lambda": 1.6187,
                "shots_faced": 16.0,
                "expected_saves": 3.91,
                "high_pressure_saves": 1.35,
                "opponent_faced": "William Osula, Yoane Wissa",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "saves": 2.8261,
                "goals_prevented": -0.0775,
                "rating": 6.9925,
                "minutes": 90.0,
                "total_pass": 26.2609,
                "accurate_pass": 16.7064,
                "total_long_balls": 14.7686,
                "accurate_long_balls": 5.2141,
                "touches": 34.7197,
                "clearances": 0.989,
                "ball_recovery": 6.3251,
                "high_claims": 1.7002,
                "punches": 0.989,
                "aerial_won": 0.3268,
                "sweeper_actions": 0.0,
                "sweeper_accurate": 0.0,
                "saves_inside_box": 1.6512,
                "possession_lost": 9.5545,
                "duels_won": 0.3268,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 12.6032,
                "accurate_own_half_passes": 11.7699,
                "gk_engine_opponent_lambda": 1.6187,
                "shots_faced": 16.0,
                "expected_saves": 3.91,
                "high_pressure_saves": 1.35,
                "opponent_faced": "William Osula, Yoane Wissa",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.917,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ismaïla Sarr": {
          "player_id": 845286,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 7,
          "height": 185,
          "market_value": 43000000,
          "stats": {
            "expected_goals": 0.4037,
            "goal_rate": 0.3078,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0627,
            "key_pass": 1,
            "rating": 6.7166,
            "minutes": 82,
            "total_pass": 18,
            "accurate_pass": 13,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 33,
            "possession_lost": 10.7528,
            "dispossessed": 1.406,
            "duels_lost": 6,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 2,
            "assist_rate": 0.0071,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.6183,
            "offsides": 1,
            "ball_carries": 8,
            "total_progression": 40,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9508,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.6,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.237,
            "pressing_faced": "HIGH",
            "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Nico González, Sven Botman",
            "opponent_faced": "Nico González, Sven Botman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.3322,
            "projected_assists": 0,
            "assist_probability": 0.0608,
            "finishing_factor": 0.9149,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 12,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0088,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0208,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 8,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 89,
                "rating": 6.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8981,
                "expected_assists": 0.0869,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 13,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1082,
                "expected_assists": 0.0011,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 8,
                "accurate_pass": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8125,
                "expected_assists": 0.0197,
                "total_shots": 6,
                "shots_on_target": 3,
                "total_pass": 17,
                "accurate_pass": 12,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024023,
              "match_date": "2026-05-03",
              "home_team": "Bournemouth",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 45,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5391,
                "expected_assists": 0.137,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 12,
                "accurate_pass": 10,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024005,
              "match_date": "2026-04-25",
              "home_team": "Liverpool FC",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5195,
                "expected_assists": 0.1207,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 17,
                "accurate_pass": 13,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025034,
              "match_date": "2026-04-20",
              "home_team": "Crystal Palace",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 31,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0096,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023999,
              "match_date": "2026-04-12",
              "home_team": "Crystal Palace",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 26,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0622,
                "expected_assists": 0.0718,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 3,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1187,
            "combined_rank_score": 523.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 542.0,
            "sofascore_rating": 6.825,
            "sofascore_appearances": 28.0,
            "fifa_rank": 504.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7166,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ismaïla Sarr",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ilkhomzhon Abduganiev",
                  "ranking": 1182
                },
                {
                  "player_name": "Pijus Širvys",
                  "ranking": 1183
                },
                {
                  "player_name": "Olivier Thill",
                  "ranking": 1184
                },
                {
                  "player_name": "Fernando Calero",
                  "ranking": 1185
                },
                {
                  "player_name": "Diego Rubio",
                  "ranking": 1186
                }
              ],
              "lower": [
                {
                  "player_name": "Kevin Danso",
                  "ranking": 1188
                },
                {
                  "player_name": "Folarin Balogun",
                  "ranking": 1189
                },
                {
                  "player_name": "Jonathan David",
                  "ranking": 1190
                },
                {
                  "player_name": "Gerard Martín",
                  "ranking": 1191
                },
                {
                  "player_name": "Keelan Lebon",
                  "ranking": 1192
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 29,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 29,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0128,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 29 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3542,
                "goals": 0.3196,
                "goal_rate": 0.3196,
                "shots_on_target": 0.8269,
                "total_shots": 2.0953,
                "expected_assists": 0.0464,
                "key_pass": 0.6743,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.1117,
                "accurate_pass": 12.5238,
                "duels_won": 3.79,
                "total_long_balls": 1.1419,
                "accurate_long_balls": 0.3445,
                "total_opp_half_passes": 13.037,
                "accurate_opp_half_passes": 9.0038,
                "crosses_total": 1.0568,
                "crosses_accurate": 0.0417,
                "touches": 32.3759,
                "possession_lost": 10.6169,
                "dispossessed": 1.3882,
                "duels_lost": 5.4378,
                "aerial_lost": 2.5287,
                "total_contest": 1.2236,
                "won_contest": 0.4664,
                "ball_recovery": 2.7754,
                "challenges_lost": 0.5112,
                "fouls": 0.3454,
                "fouls_drawn": 1.8245,
                "assists": 0.007,
                "assist_rate": 0.007,
                "interceptions": 0.1179,
                "tackles_won": 0.325,
                "tackles": 0.4807,
                "clearances": 0.8742,
                "blocks": 0.2594,
                "big_chances_created": 0.0449,
                "big_chances_missed": 0.6119,
                "xgot": 0.5427,
                "offsides": 0.684,
                "ball_carries": 7.83,
                "total_progression": 39.7004,
                "progressive_carries": 1.3501,
                "shots_off_target": 1.2684
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1514,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1287,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1094,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.093,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.079,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0672,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0571,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-20",
                    "opponent": "West Ham United",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0485,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Newcastle United",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0412,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3309,
                  "totalOppositionHalfPasses": 9.1922,
                  "accurateOppositionHalfPasses": 6.4211,
                  "accuratePass": 8.9495,
                  "totalShots": 1.4686
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.35424405336380005,
                    "model_output": 0.3542,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.064
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0337
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0173
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0113
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0105
                        }
                      ],
                      "others": 0.0184,
                      "total": 0.3542,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.27894
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.120678
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.056548
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.035296
                        },
                        {
                          "name": "goals",
                          "margin": 0.031739
                        }
                      ],
                      "others_margin": 0.053708
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.31957751512527466,
                    "model_output": 0.3196,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0505
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0522
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.023
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0226
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0099
                        }
                      ],
                      "others": 0.0037,
                      "total": 0.3196,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.221313
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.186672
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.077882
                        },
                        {
                          "name": "goals",
                          "margin": 0.076838
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.031904
                        }
                      ],
                      "others_margin": 0.011264
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8268864154815674,
                    "model_output": 0.8269,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1914
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0605
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0459
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0448
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0262
                        }
                      ],
                      "others": 0.0107,
                      "total": 0.8269,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.304931
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.079748
                        },
                        {
                          "name": "goals",
                          "margin": 0.056505
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.055101
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.03268
                        }
                      ],
                      "others_margin": 0.012943
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.095327854156494,
                    "model_output": 2.0953,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5483
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0651
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0477
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0438
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0301
                        }
                      ],
                      "others": -0.0184,
                      "total": 2.0953,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.548321
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.065099
                        },
                        {
                          "name": "goals",
                          "margin": 0.047717
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.043754
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.030091
                        }
                      ],
                      "others_margin": -0.018361
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04642254114151001,
                    "model_output": 0.0464,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0143
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0088
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0067
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.003
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0111,
                      "total": 0.0464,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.20135
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.119409
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.1008
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.04829
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.044359
                        }
                      ],
                      "others_margin": -0.214008
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6742924451828003,
                    "model_output": 0.6743,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.204
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0609
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0359
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0305
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0241
                        }
                      ],
                      "others": -0.0523,
                      "total": 0.6743,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.264381
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.071901
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.044885
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.039824
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.032647
                        }
                      ],
                      "others_margin": -0.074656
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.716610908508301,
                    "model_output": 6.7166,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0427
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0247
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.015
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.013
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0122
                        }
                      ],
                      "others": -0.0234,
                      "total": 6.7166,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.042657
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.024739
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.014955
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.013003
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.0122
                        }
                      ],
                      "others_margin": -0.023311
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 29,
                  "role_matches": 24,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0128, quality 0.796)",
              "stats": {
                "expected_goals": 0.3588,
                "goals": 0.3237,
                "goal_rate": 0.3237,
                "shots_on_target": 0.8375,
                "total_shots": 2.1221,
                "expected_assists": 0.047,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assists": 0.0071,
                "assist_rate": 0.0071,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.6197,
                "xgot": 0.5496,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2846
              },
              "params": {
                "market_value_eur": 43000000,
                "quality_factor": 0.7957,
                "boost_factor": 1.0128,
                "reference_quality": 0.505,
                "history_matches": 29,
                "history_shrink": 0.1471,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3588,
                "goals": 0.3237,
                "goal_rate": 0.3237,
                "shots_on_target": 0.8375,
                "total_shots": 2.1221,
                "expected_assists": 0.047,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assists": 0.0071,
                "assist_rate": 0.0071,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.6197,
                "xgot": 0.5496,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2846
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.3411,
                "goals": 0.3078,
                "goal_rate": 0.3078,
                "shots_on_target": 0.7963,
                "total_shots": 2.0177,
                "expected_assists": 0.047,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assists": 0.0071,
                "assist_rate": 0.0071,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.5892,
                "xgot": 0.5226,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2214,
                "duel_xg_multiplier": 0.9508,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Nico González, Sven Botman",
                  "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                  "duel_win_rate": 0.237,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9508,
                  "skill_edge": -0.0155,
                  "height_edge": -0.018,
                  "attacker_skill": 0.7957,
                  "defender_skill": 0.8301,
                  "attacker_role": "SS",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Nico González",
                      "market_value": 54000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.8599
                    },
                    {
                      "player": "Sven Botman",
                      "market_value": 33000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8002
                    }
                  ],
                  "xg_override": 0.3411
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.1221,
                  "after": 2.0177
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2846,
                  "after": 1.2214
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8375,
                  "after": 0.7963
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.6197,
                  "after": 0.5892
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.5496,
                  "after": 0.5226
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3588,
                  "after": 0.3411
                },
                {
                  "stat": "goals",
                  "before": 0.3237,
                  "after": 0.3078
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.3411,
                "goal_rate": 0.3078,
                "goals": 0,
                "shots_on_target": 0.7963,
                "total_shots": 2.0177,
                "expected_assists": 0.047,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assist_rate": 0.0071,
                "assists": 0,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.5892,
                "xgot": 0.5226,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2214,
                "duel_xg_multiplier": 0.9508,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.4037,
                "goal_rate": 0.3078,
                "goals": 0,
                "shots_on_target": 0.7963,
                "total_shots": 2.0177,
                "expected_assists": 0.0627,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assist_rate": 0.0071,
                "assists": 0,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.5892,
                "xgot": 0.6183,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2214,
                "duel_xg_multiplier": 0.9508,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9149,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.3411,
                  "after": 0.4037
                },
                {
                  "stat": "expected_assists",
                  "before": 0.047,
                  "after": 0.0627
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 81.0)",
              "stats": {
                "expected_goals": 0.4037,
                "goal_rate": 0.3078,
                "goals": 0,
                "shots_on_target": 0.7963,
                "total_shots": 2.0177,
                "expected_assists": 0.0627,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assist_rate": 0.0071,
                "assists": 0,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.5892,
                "xgot": 0.6183,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2214,
                "duel_xg_multiplier": 0.9508,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9149,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1187,
                "fifa_rank": 504.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.4037,
                "goal_rate": 0.3078,
                "goals": 0,
                "shots_on_target": 0.7963,
                "total_shots": 2.0177,
                "expected_assists": 0.0627,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assist_rate": 0.0071,
                "assists": 0,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.5892,
                "xgot": 0.6183,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2214,
                "duel_xg_multiplier": 0.9508,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.3322,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9149,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.3322,
                "goal_rate": 0.3078,
                "scorer_weight": 0.3693,
                "squad_weight_total": 1.6514,
                "weight_share": 0.2237,
                "finishing_factor": 0.9149,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.4037,
                "goal_rate": 0.3078,
                "goals": 0,
                "shots_on_target": 0.7963,
                "total_shots": 2.0177,
                "expected_assists": 0.0627,
                "key_pass": 0.6829,
                "rating": 6.7166,
                "minutes": 81.71,
                "total_pass": 18.3435,
                "accurate_pass": 12.6841,
                "duels_won": 3.8385,
                "total_long_balls": 1.1565,
                "accurate_long_balls": 0.3489,
                "total_opp_half_passes": 13.2039,
                "accurate_opp_half_passes": 9.119,
                "crosses_total": 1.0703,
                "crosses_accurate": 0.0422,
                "touches": 32.7903,
                "possession_lost": 10.7528,
                "dispossessed": 1.406,
                "duels_lost": 5.5074,
                "aerial_lost": 2.5611,
                "total_contest": 1.2393,
                "won_contest": 0.4724,
                "ball_recovery": 2.8109,
                "challenges_lost": 0.5177,
                "fouls": 0.3498,
                "fouls_drawn": 1.8479,
                "assist_rate": 0.0071,
                "assists": 0,
                "interceptions": 0.1194,
                "tackles_won": 0.3292,
                "tackles": 0.4869,
                "clearances": 0.8854,
                "blocks": 0.2627,
                "big_chances_created": 0.0455,
                "big_chances_missed": 0.5892,
                "xgot": 0.6183,
                "offsides": 0.6928,
                "ball_carries": 7.9302,
                "total_progression": 40.2086,
                "progressive_carries": 1.3674,
                "shots_off_target": 1.2214,
                "duel_xg_multiplier": 0.9508,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.6,
                "aerial_won": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.3322,
                "projected_assists": 0,
                "assist_probability": 0.0608,
                "finishing_factor": 0.9149,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0608,
                "assist_rate": 0.0071,
                "provider_weight": 0.0502,
                "squad_weight_total": 0.917,
                "weight_share": 0.0547,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Yéremy Pino": {
          "player_id": 984624,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 172,
          "market_value": 27000000,
          "stats": {
            "expected_goals": 0.1332,
            "goal_rate": 0.1359,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.1463,
            "key_pass": 1,
            "rating": 6.8742,
            "minutes": 68,
            "total_pass": 28,
            "accurate_pass": 21,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 11,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 41,
            "possession_lost": 12.6594,
            "dispossessed": 0.5945,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.008,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.1647,
            "offsides": 0,
            "ball_carries": 10,
            "total_progression": 31,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8219,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.5,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "HIGH",
            "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Nico González, Sven Botman",
            "opponent_faced": "Nico González, Sven Botman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1247,
            "projected_assists": 0,
            "assist_probability": 0.1361,
            "finishing_factor": 1.1433,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 61,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0531,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "total_pass": 17,
                "accurate_pass": 13,
                "duels_won": 1
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 83,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.349,
                "expected_assists": 0.1699,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 82,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1584,
                "expected_assists": 0.1532,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 35,
                "accurate_pass": 27,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 37,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0073,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 89,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2475,
                "expected_assists": 0.3046,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 38,
                "accurate_pass": 31,
                "key_pass": 3,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 68,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0502,
                "expected_assists": 0.0715,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 35,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0584,
                "expected_assists": 0.0208,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 45,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.2783,
                "expected_assists": 0.3075,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 12,
                "key_pass": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0605,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 60,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1004,
                "expected_assists": 0.0001,
                "total_shots": 1,
                "total_pass": 14,
                "accurate_pass": 12,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1312,
            "combined_rank_score": 569.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 4.0,
            "fifa_rank": 881.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8742,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yéremy Pino",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Bazoumana Touré",
                  "ranking": 1307
                },
                {
                  "player_name": "Emil Audero",
                  "ranking": 1308
                },
                {
                  "player_name": "Lukáš Haraslín",
                  "ranking": 1309
                },
                {
                  "player_name": "Marko Dmitrović",
                  "ranking": 1310
                },
                {
                  "player_name": "Tino Livramento",
                  "ranking": 1311
                }
              ],
              "lower": [
                {
                  "player_name": "Cecilio Waterman",
                  "ranking": 1313
                },
                {
                  "player_name": "Javier Guerra",
                  "ranking": 1314
                },
                {
                  "player_name": "Pedro Gonçalves",
                  "ranking": 1315
                },
                {
                  "player_name": "Matheus Cunha",
                  "ranking": 1316
                },
                {
                  "player_name": "Pacha",
                  "ranking": 1317
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.761,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.761,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0062,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 103.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.62,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0733
            },
            "rationale": "XGBoost regressor (F_service) evaluated 41 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.07, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1362,
                "goals": 0.1653,
                "goal_rate": 0.1653,
                "shots_on_target": 0.491,
                "total_shots": 1.2646,
                "expected_assists": 0.1091,
                "key_pass": 1.169,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.4262,
                "accurate_pass": 21.2461,
                "duels_won": 2.8567,
                "total_long_balls": 2.1081,
                "accurate_long_balls": 1.2035,
                "total_opp_half_passes": 15.8506,
                "accurate_opp_half_passes": 11.3627,
                "crosses_total": 2.6498,
                "crosses_accurate": 0.4376,
                "touches": 40.5136,
                "possession_lost": 12.5814,
                "dispossessed": 0.5908,
                "duels_lost": 3.7668,
                "aerial_lost": 0.7353,
                "total_contest": 1.3197,
                "won_contest": 0.4339,
                "ball_recovery": 3.0586,
                "challenges_lost": 0.8064,
                "fouls": 0.851,
                "fouls_drawn": 1.0137,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.256,
                "tackles_won": 0.4427,
                "tackles": 0.8574,
                "clearances": 0.845,
                "blocks": 0.1539,
                "big_chances_created": 0.5857,
                "big_chances_missed": 0.1357,
                "xgot": 0.1684,
                "offsides": 0.3013,
                "ball_carries": 10.2349,
                "total_progression": 31.2813,
                "progressive_carries": 1.4855,
                "shots_off_target": 0.7736
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 37.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Liverpool FC",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.1025,
                  "totalOppositionHalfPasses": 13.9669,
                  "accurateOppositionHalfPasses": 9.9437,
                  "accuratePass": 18.7853,
                  "totalShots": 1.1506
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.13618749380111694,
                    "model_output": 0.1362,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0562
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0455
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0282
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0174
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0081
                        }
                      ],
                      "others": -0.0198,
                      "total": 0.1362,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.248929
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.196579
                        },
                        {
                          "name": "goals",
                          "margin": -0.14473
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.100768
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.050678
                        }
                      ],
                      "others_margin": -0.135218
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.16528169810771942,
                    "model_output": 0.1653,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0557
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0419
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0312
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.011
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.008
                        }
                      ],
                      "others": -0.002,
                      "total": 0.1653,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.24179
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.175978
                        },
                        {
                          "name": "goals",
                          "margin": -0.154882
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.060587
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.046911
                        }
                      ],
                      "others_margin": -0.01267
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.4909917414188385,
                    "model_output": 0.491,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.177
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0588
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.05
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0364
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0282
                        }
                      ],
                      "others": -0.0496,
                      "total": 0.491,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.284892
                        },
                        {
                          "name": "goals",
                          "margin": -0.085908
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.079369
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.061965
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.050878
                        }
                      ],
                      "others_margin": -0.096306
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.264587640762329,
                    "model_output": 1.2646,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.384
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1278
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1124
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0569
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0442
                        }
                      ],
                      "others": -0.1568,
                      "total": 1.2646,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.383964
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.127781
                        },
                        {
                          "name": "goals",
                          "margin": -0.112354
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.056902
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.044156
                        }
                      ],
                      "others_margin": -0.156889
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.1090511903166771,
                    "model_output": 0.1091,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0107
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0095
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0096
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0094
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0068
                        }
                      ],
                      "others": 0.0176,
                      "total": 0.1091,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.153764
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.119711
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.107638
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.105414
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.076838
                        }
                      ],
                      "others_margin": 0.17598
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.1689594984054565,
                    "model_output": 1.169,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.173
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0483
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0473
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0479
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0326
                        }
                      ],
                      "others": 0.1459,
                      "total": 1.169,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.228523
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.055475
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.05151
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.049534
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.032357
                        }
                      ],
                      "others_margin": 0.133273
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.874192237854004,
                    "model_output": 6.8742,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0567
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0189
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0175
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0168
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0131
                        }
                      ],
                      "others": 0.0618,
                      "total": 6.8742,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.056696
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.018864
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.01748
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.01676
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.013137
                        }
                      ],
                      "others_margin": 0.061783
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 41,
                  "role_matches": 32,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0062, quality 0.694)",
              "stats": {
                "expected_goals": 0.137,
                "goals": 0.1663,
                "goal_rate": 0.1663,
                "shots_on_target": 0.494,
                "total_shots": 1.2724,
                "expected_assists": 0.1097,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6662,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8563,
                "fouls_drawn": 1.02,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.2576,
                "tackles_won": 0.4454,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1365,
                "xgot": 0.1694,
                "offsides": 0.3032,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.7784
              },
              "params": {
                "market_value_eur": 27000000,
                "quality_factor": 0.6941,
                "boost_factor": 1.0062,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0052)",
              "stats": {
                "expected_goals": 0.137,
                "goals": 0.1654,
                "goal_rate": 0.1654,
                "shots_on_target": 0.4914,
                "total_shots": 1.2761,
                "expected_assists": 0.1097,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1365,
                "xgot": 0.1694,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.7784
              },
              "params": {
                "blend_weight": 0.0052,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7558,
                "prior_reliability": 0.0733,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.6662,
                  "after": 2.6844
                },
                {
                  "stat": "fouls",
                  "before": 0.8563,
                  "after": 0.8625
                },
                {
                  "stat": "totalOffside",
                  "before": 0.3032,
                  "after": 0.3087
                },
                {
                  "stat": "wasFouled",
                  "before": 1.02,
                  "after": 1.0254
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.137,
                "goals": 0.1654,
                "goal_rate": 0.1654,
                "shots_on_target": 0.4914,
                "total_shots": 1.2761,
                "expected_assists": 0.1097,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1365,
                "xgot": 0.1694,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.7784
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.1126,
                "goals": 0.1359,
                "goal_rate": 0.1359,
                "shots_on_target": 0.4039,
                "total_shots": 1.0488,
                "expected_assists": 0.1097,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assists": 0.008,
                "assist_rate": 0.008,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1122,
                "xgot": 0.1392,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.6398,
                "duel_xg_multiplier": 0.8219,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "aerial_won": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Nico González, Sven Botman",
                  "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.8219,
                  "skill_edge": -0.0612,
                  "height_edge": -0.06,
                  "attacker_skill": 0.6941,
                  "defender_skill": 0.8301,
                  "attacker_role": "SS",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Nico González",
                      "market_value": 54000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.8599
                    },
                    {
                      "player": "Sven Botman",
                      "market_value": 33000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8002
                    }
                  ],
                  "xg_override": 0.1126
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.2761,
                  "after": 1.0488
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7784,
                  "after": 0.6398
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4914,
                  "after": 0.4039
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1694,
                  "after": 0.1392
                },
                {
                  "stat": "goals",
                  "before": 0.1654,
                  "after": 0.1359
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.137,
                  "after": 0.1126
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1365,
                  "after": 0.1122
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1126,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4039,
                "total_shots": 1.0488,
                "expected_assists": 0.1097,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1122,
                "xgot": 0.1392,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.6398,
                "duel_xg_multiplier": 0.8219,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "aerial_won": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1332,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4039,
                "total_shots": 1.0488,
                "expected_assists": 0.1463,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1122,
                "xgot": 0.1647,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.6398,
                "duel_xg_multiplier": 0.8219,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "aerial_won": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1433,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1126,
                  "after": 0.1332
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1097,
                  "after": 0.1463
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.1332,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4039,
                "total_shots": 1.0488,
                "expected_assists": 0.1463,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1122,
                "xgot": 0.1647,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.6398,
                "duel_xg_multiplier": 0.8219,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "aerial_won": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1433,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1312,
                "fifa_rank": 881.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1332,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4039,
                "total_shots": 1.0488,
                "expected_assists": 0.1463,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1122,
                "xgot": 0.1647,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.6398,
                "duel_xg_multiplier": 0.8219,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "aerial_won": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1247,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1433,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1247,
                "goal_rate": 0.1359,
                "scorer_weight": 0.1523,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0922,
                "finishing_factor": 1.1433,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.1332,
                "goal_rate": 0.1359,
                "goals": 0,
                "shots_on_target": 0.4039,
                "total_shots": 1.0488,
                "expected_assists": 0.1463,
                "key_pass": 1.1762,
                "rating": 6.8742,
                "minutes": 68.02,
                "total_pass": 27.5962,
                "accurate_pass": 21.3778,
                "duels_won": 2.8744,
                "total_long_balls": 2.1212,
                "accurate_long_balls": 1.211,
                "total_opp_half_passes": 15.9489,
                "accurate_opp_half_passes": 11.4331,
                "crosses_total": 2.6844,
                "crosses_accurate": 0.4403,
                "touches": 40.7648,
                "possession_lost": 12.6594,
                "dispossessed": 0.5945,
                "duels_lost": 3.7902,
                "aerial_lost": 0.7399,
                "total_contest": 1.3279,
                "won_contest": 0.4366,
                "ball_recovery": 3.0776,
                "challenges_lost": 0.8114,
                "fouls": 0.8625,
                "fouls_drawn": 1.0254,
                "assist_rate": 0.008,
                "assists": 0,
                "interceptions": 0.2598,
                "tackles_won": 0.4502,
                "tackles": 0.8627,
                "clearances": 0.8502,
                "blocks": 0.1549,
                "big_chances_created": 0.5893,
                "big_chances_missed": 0.1122,
                "xgot": 0.1647,
                "offsides": 0.3087,
                "ball_carries": 10.2984,
                "total_progression": 31.4752,
                "progressive_carries": 1.4947,
                "shots_off_target": 0.6398,
                "duel_xg_multiplier": 0.8219,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "aerial_won": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Nico González, Sven Botman",
                "opponent_faced": "Nico González, Sven Botman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1247,
                "projected_assists": 0,
                "assist_probability": 0.1361,
                "finishing_factor": 1.1433,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1361,
                "assist_rate": 0.008,
                "provider_weight": 0.117,
                "squad_weight_total": 0.917,
                "weight_share": 0.1276,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jean-Philippe Mateta": {
          "player_id": 848276,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 14,
          "height": 192,
          "market_value": 29000000,
          "stats": {
            "expected_goals": 0.3452,
            "goal_rate": 0.3284,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0472,
            "key_pass": 1,
            "rating": 6.6513,
            "minutes": 76,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 8.3405,
            "dispossessed": 1.4634,
            "duels_lost": 6,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.2077,
            "offsides": 1,
            "ball_carries": 4,
            "total_progression": 18,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9132,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Sven Botman, Malick Thiaw",
            "opponent_faced": "Sven Botman, Malick Thiaw",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.2919,
            "projected_assists": 0,
            "assist_probability": 0.0461,
            "finishing_factor": 1.1071,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 29,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4616,
                "expected_assists": 0.0052,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 63,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6981,
                "expected_assists": 0.0152,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 13,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3848,
                "total_shots": 1,
                "shots_on_target": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 29,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0073,
                "total_shots": 0,
                "total_pass": 4,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 60,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0301,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 25,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.586,
                "expected_assists": 0.0009,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 3,
                "accurate_pass": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024023,
              "match_date": "2026-05-03",
              "home_team": "Bournemouth",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 25,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0848,
                "expected_assists": 0.002,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 3,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024005,
              "match_date": "2026-04-25",
              "home_team": "Liverpool FC",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2994,
                "expected_assists": 0.0073,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 7,
                "accurate_pass": 6,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025034,
              "match_date": "2026-04-20",
              "home_team": "Crystal Palace",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 31,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0128,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023999,
              "match_date": "2026-04-12",
              "home_team": "Crystal Palace",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 25,
                "rating": 8.4,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.0812,
                "expected_assists": 0.0002,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 2,
                "accurate_pass": 1,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1324,
            "combined_rank_score": 575.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 644.0,
            "sofascore_rating": 6.7469,
            "sofascore_appearances": 32.0,
            "fifa_rank": 506.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6513,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jean-Philippe Mateta",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Azzedine Ounahi",
                  "ranking": 1319
                },
                {
                  "player_name": "Noussair Mazraoui",
                  "ranking": 1320
                },
                {
                  "player_name": "Felipe Chamorro",
                  "ranking": 1321
                },
                {
                  "player_name": "Beka Mikeltadze",
                  "ranking": 1322
                },
                {
                  "player_name": "Fornals",
                  "ranking": 1323
                }
              ],
              "lower": [
                {
                  "player_name": "Brahim",
                  "ranking": 1325
                },
                {
                  "player_name": "Diego Llorente",
                  "ranking": 1326
                },
                {
                  "player_name": "Brandon Mechele",
                  "ranking": 1327
                },
                {
                  "player_name": "De Frutos",
                  "ranking": 1328
                },
                {
                  "player_name": "Javier Rueda",
                  "ranking": 1329
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.757,
          "history_matches": 33,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 33,
            "data_confidence": 0.757,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0081,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 62.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.9,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0467
            },
            "rationale": "XGBoost regressor (F_service) evaluated 33 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Crystal Palace, rel: 0.05, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.317,
                "goals": 0.3581,
                "goal_rate": 0.3581,
                "shots_on_target": 0.7673,
                "total_shots": 1.6884,
                "expected_assists": 0.0351,
                "key_pass": 0.5732,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2037,
                "accurate_pass": 6.5195,
                "duels_won": 3.5136,
                "total_long_balls": 0.5837,
                "accurate_long_balls": 0.3481,
                "total_opp_half_passes": 7.8707,
                "accurate_opp_half_passes": 4.5108,
                "crosses_total": 0.2392,
                "crosses_accurate": 0.1068,
                "touches": 21.7916,
                "possession_lost": 8.2735,
                "dispossessed": 1.4516,
                "duels_lost": 5.9359,
                "aerial_lost": 2.9729,
                "total_contest": 0.8805,
                "won_contest": 0.3672,
                "ball_recovery": 1.8919,
                "challenges_lost": 0.2296,
                "fouls": 0.8384,
                "fouls_drawn": 0.5584,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0275,
                "tackles_won": 0.0709,
                "tackles": 0.4898,
                "clearances": 1.72,
                "blocks": 0.2136,
                "big_chances_created": 0.0882,
                "big_chances_missed": 1.0142,
                "xgot": 0.1908,
                "offsides": 0.7585,
                "ball_carries": 4.4598,
                "total_progression": 17.9758,
                "progressive_carries": 0.4728,
                "shots_off_target": 0.9211
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1507,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1281,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.1089,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0787,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0669,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Liverpool FC",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-20",
                    "opponent": "West Ham United",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Newcastle United",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0411,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Leeds United",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3397,
                  "totalOppositionHalfPasses": 5.3347,
                  "accurateOppositionHalfPasses": 2.9931,
                  "accuratePass": 4.0781,
                  "totalShots": 1.232
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.31697678565979004,
                    "model_output": 0.317,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0667
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0192
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0116
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0109
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0103
                        }
                      ],
                      "others": -0.0007,
                      "total": 0.317,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.289186
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.069753
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.039811
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.036023
                        },
                        {
                          "name": "goals",
                          "margin": 0.032984
                        }
                      ],
                      "others_margin": -0.002005
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.35814565420150757,
                    "model_output": 0.3581,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0529
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0459
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0236
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0167
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0152
                        }
                      ],
                      "others": 0.0305,
                      "total": 0.3581,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.230796
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.164495
                        },
                        {
                          "name": "goals",
                          "margin": 0.074974
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.0499
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.045389
                        }
                      ],
                      "others_margin": 0.089273
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7672978043556213,
                    "model_output": 0.7673,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1673
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0481
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0404
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0324
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0265
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.7673,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.271155
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.066104
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.055239
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.044552
                        },
                        {
                          "name": "goals",
                          "margin": 0.034928
                        }
                      ],
                      "others_margin": -0.004585
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.6883795261383057,
                    "model_output": 1.6884,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4597
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1242
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0497
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0331
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0318
                        }
                      ],
                      "others": 0.0252,
                      "total": 1.6884,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.459653
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.124236
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.049746
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.033069
                        },
                        {
                          "name": "goals",
                          "margin": 0.031823
                        }
                      ],
                      "others_margin": 0.025248
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0350671224296093,
                    "model_output": 0.0351,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0183
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0093
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0074
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0041
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0232,
                      "total": 0.0351,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.250073
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.120159
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.106449
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.064877
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.058253
                        }
                      ],
                      "others_margin": -0.506371
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5732395052909851,
                    "model_output": 0.5732,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2053
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0536
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0502
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0439
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0268
                        }
                      ],
                      "others": -0.1316,
                      "total": 0.5732,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.265936
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.062881
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.062703
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.058207
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.037332
                        }
                      ],
                      "others_margin": -0.206706
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6512651443481445,
                    "model_output": 6.6513,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0417
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0405
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.02
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0199
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0178
                        }
                      ],
                      "others": -0.0942,
                      "total": 6.6513,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.041718
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.040506
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.020033
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.019853
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.017758
                        }
                      ],
                      "others_margin": -0.094169
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 33,
                  "role_matches": 26,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0081, quality 0.710)",
              "stats": {
                "expected_goals": 0.3195,
                "goals": 0.361,
                "goal_rate": 0.361,
                "shots_on_target": 0.7735,
                "total_shots": 1.7021,
                "expected_assists": 0.0354,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2411,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8452,
                "fouls_drawn": 0.5629,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0277,
                "tackles_won": 0.0715,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 1.0224,
                "xgot": 0.1923,
                "offsides": 0.7646,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.9286
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0081,
                "reference_quality": 0.505,
                "history_matches": 33,
                "history_shrink": 0.1316,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0040)",
              "stats": {
                "expected_goals": 0.3195,
                "goals": 0.3596,
                "goal_rate": 0.3596,
                "shots_on_target": 0.7704,
                "total_shots": 1.7051,
                "expected_assists": 0.0354,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 1.0224,
                "xgot": 0.1923,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.9286
              },
              "params": {
                "blend_weight": 0.004,
                "history_matches": 33,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8484,
                "prior_reliability": 0.0467,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.8452,
                  "after": 0.8515
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3195,
                "goals": 0.3596,
                "goal_rate": 0.3596,
                "shots_on_target": 0.7704,
                "total_shots": 1.7051,
                "expected_assists": 0.0354,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 1.0224,
                "xgot": 0.1923,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.9286
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.2918,
                "goals": 0.3284,
                "goal_rate": 0.3284,
                "shots_on_target": 0.7035,
                "total_shots": 1.5571,
                "expected_assists": 0.0354,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 0.9337,
                "xgot": 0.1756,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.848,
                "duel_xg_multiplier": 0.9132,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Sven Botman, Malick Thiaw",
                "opponent_faced": "Sven Botman, Malick Thiaw",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Sven Botman, Malick Thiaw",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9132,
                  "skill_edge": -0.053,
                  "height_edge": -0.006,
                  "attacker_skill": 0.71,
                  "defender_skill": 0.8279,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Sven Botman",
                      "market_value": 33000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8002
                    },
                    {
                      "player": "Malick Thiaw",
                      "market_value": 46000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8555
                    }
                  ],
                  "xg_override": 0.2918
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.7051,
                  "after": 1.5571
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 1.0224,
                  "after": 0.9337
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9286,
                  "after": 0.848
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7704,
                  "after": 0.7035
                },
                {
                  "stat": "goals",
                  "before": 0.3596,
                  "after": 0.3284
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3195,
                  "after": 0.2918
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1923,
                  "after": 0.1756
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.2918,
                "goal_rate": 0.3284,
                "goals": 0,
                "shots_on_target": 0.7035,
                "total_shots": 1.5571,
                "expected_assists": 0.0354,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 0.9337,
                "xgot": 0.1756,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.848,
                "duel_xg_multiplier": 0.9132,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Sven Botman, Malick Thiaw",
                "opponent_faced": "Sven Botman, Malick Thiaw",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.3452,
                "goal_rate": 0.3284,
                "goals": 0,
                "shots_on_target": 0.7035,
                "total_shots": 1.5571,
                "expected_assists": 0.0472,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 0.9337,
                "xgot": 0.2077,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.848,
                "duel_xg_multiplier": 0.9132,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Sven Botman, Malick Thiaw",
                "opponent_faced": "Sven Botman, Malick Thiaw",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1071,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2918,
                  "after": 0.3452
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0354,
                  "after": 0.0472
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 81.0)",
              "stats": {
                "expected_goals": 0.3452,
                "goal_rate": 0.3284,
                "goals": 0,
                "shots_on_target": 0.7035,
                "total_shots": 1.5571,
                "expected_assists": 0.0472,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 0.9337,
                "xgot": 0.2077,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.848,
                "duel_xg_multiplier": 0.9132,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Sven Botman, Malick Thiaw",
                "opponent_faced": "Sven Botman, Malick Thiaw",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1071,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1324,
                "fifa_rank": 506.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.3452,
                "goal_rate": 0.3284,
                "goals": 1,
                "shots_on_target": 0.7035,
                "total_shots": 1.5571,
                "expected_assists": 0.0472,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 0.9337,
                "xgot": 0.2077,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.848,
                "duel_xg_multiplier": 0.9132,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Sven Botman, Malick Thiaw",
                "opponent_faced": "Sven Botman, Malick Thiaw",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2919,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1071,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.2919,
                "goal_rate": 0.3284,
                "scorer_weight": 0.3822,
                "squad_weight_total": 1.6514,
                "weight_share": 0.2314,
                "finishing_factor": 1.1071,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.3452,
                "goal_rate": 0.3284,
                "goals": 1,
                "shots_on_target": 0.7035,
                "total_shots": 1.5571,
                "expected_assists": 0.0472,
                "key_pass": 0.5779,
                "rating": 6.6513,
                "minutes": 76.36,
                "total_pass": 10.2863,
                "accurate_pass": 6.5723,
                "duels_won": 3.5421,
                "total_long_balls": 0.5884,
                "accurate_long_balls": 0.3509,
                "total_opp_half_passes": 7.9345,
                "accurate_opp_half_passes": 4.5473,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.1077,
                "touches": 21.9681,
                "possession_lost": 8.3405,
                "dispossessed": 1.4634,
                "duels_lost": 5.984,
                "aerial_lost": 2.997,
                "total_contest": 0.8876,
                "won_contest": 0.3702,
                "ball_recovery": 1.9072,
                "challenges_lost": 0.2315,
                "fouls": 0.8515,
                "fouls_drawn": 0.5607,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0276,
                "tackles_won": 0.0712,
                "tackles": 0.4938,
                "clearances": 1.7339,
                "blocks": 0.2153,
                "big_chances_created": 0.0889,
                "big_chances_missed": 0.9337,
                "xgot": 0.2077,
                "offsides": 0.7615,
                "ball_carries": 4.4959,
                "total_progression": 18.1214,
                "progressive_carries": 0.4766,
                "shots_off_target": 0.848,
                "duel_xg_multiplier": 0.9132,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Sven Botman, Malick Thiaw",
                "opponent_faced": "Sven Botman, Malick Thiaw",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2919,
                "projected_assists": 0,
                "assist_probability": 0.0461,
                "finishing_factor": 1.1071,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0461,
                "assist_rate": 0.0,
                "provider_weight": 0.0378,
                "squad_weight_total": 0.917,
                "weight_share": 0.0412,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Dean Henderson": {
          "player_id": 788134,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 188,
          "market_value": 29000000,
          "stats": {
            "saves": 1,
            "goals_prevented": -0.0194,
            "rating": 6.9863,
            "minutes": 5,
            "total_pass": 5,
            "accurate_pass": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "touches": 7,
            "clearances": 0,
            "ball_recovery": 2,
            "high_claims": 0,
            "punches": 0.2514,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 1,
            "possession_lost": 2.2834,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "bench_appearance_probability": 0.154,
            "bench_expected_minutes": 5.47,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 28,
                "clearances": 1,
                "ball_recovery": 7,
                "saves": 5,
                "goals_prevented": -0.1892
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 11,
                "clearances": 2,
                "ball_recovery": 11,
                "saves": 4,
                "goals_prevented": -0.917
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 24,
                "clearances": 3,
                "ball_recovery": 13,
                "saves": 3,
                "goals_prevented": -0.3452
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 7,
                "ball_recovery": 11,
                "saves": 5,
                "goals_prevented": -0.2894
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 9,
                "clearances": 3,
                "ball_recovery": 10,
                "saves": 1,
                "goals_prevented": 0.1682
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 11,
                "clearances": 2,
                "ball_recovery": 4,
                "saves": 1,
                "goals_prevented": -1.0125
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 7,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 5,
                "goals_prevented": 0.026
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024023,
              "match_date": "2026-05-03",
              "home_team": "Bournemouth",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0067,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 22,
                "clearances": 1,
                "ball_recovery": 10,
                "saves": 3,
                "goals_prevented": -1.0657
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024005,
              "match_date": "2026-04-25",
              "home_team": "Liverpool FC",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 19,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 4,
                "goals_prevented": -1.0743
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025034,
              "match_date": "2026-04-20",
              "home_team": "Crystal Palace",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 18,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": 0.1979
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 824,
            "combined_rank_score": 393.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 413.0,
            "sofascore_rating": 6.9297,
            "sofascore_appearances": 37.0,
            "fifa_rank": 373.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9863,
            "source_file": "data/player_rankings.csv",
            "player_name": "Dean Henderson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Michal Beran",
                  "ranking": 819
                },
                {
                  "player_name": "Kim Jisung",
                  "ranking": 820
                },
                {
                  "player_name": "Florian Thauvin",
                  "ranking": 821
                },
                {
                  "player_name": "Corentin Tolisso",
                  "ranking": 822
                },
                {
                  "player_name": "José María Giménez",
                  "ranking": 823
                }
              ],
              "lower": [
                {
                  "player_name": "Palhinha",
                  "ranking": 825
                },
                {
                  "player_name": "Pape Gueye",
                  "ranking": 826
                },
                {
                  "player_name": "Caoimhin Kelleher",
                  "ranking": 827
                },
                {
                  "player_name": "Antonio Raíllo",
                  "ranking": 828
                },
                {
                  "player_name": "Dilshod Akhmadaliev",
                  "ranking": 829
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 40,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "G_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "accurateLongBalls",
              "totalOwnHalfPasses",
              "accurateOwnHalfPasses",
              "saves",
              "savedShotsFromInsideTheBox",
              "goodHighClaim",
              "punches",
              "aerialWon",
              "totalKeeperSweeper",
              "accurateKeeperSweeper",
              "totalClearance",
              "ballRecovery",
              "touches",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "goalsPrevented",
              "rating",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 40,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 5.471593798579361,
            "bench_appearance_prob": 0.154,
            "market_value_adjustment": 1.0068,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "Bench projection scaled from XGBoost G_service (40 historical appearances) to 5.5 expected mins (appearance prob 0.15); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.9354,
                "goals_prevented": -0.1006,
                "rating": 6.9863,
                "minutes": 28.5,
                "total_pass": 27.9733,
                "accurate_pass": 16.1819,
                "total_long_balls": 15.7528,
                "accurate_long_balls": 4.0854,
                "touches": 38.34,
                "clearances": 1.7338,
                "ball_recovery": 8.9459,
                "high_claims": 0.8261,
                "punches": 1.3009,
                "aerial_won": 0.2128,
                "sweeper_actions": 0.7835,
                "sweeper_accurate": 0.7835,
                "saves_inside_box": 2.6185,
                "possession_lost": 11.8133,
                "duels_won": 0.2775,
                "duels_lost": 0.0539,
                "total_contest": 0.0036,
                "won_contest": 0.0036,
                "fouls": 0.0512,
                "fouls_drawn": 0.0237,
                "total_own_half_passes": 15.1192,
                "accurate_own_half_passes": 13.4026
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-25T10:04:36.867499+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 199,
                    "rows": 6796
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-04-20",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "sweeper_actions_p90": 0.753,
                  "distribution_accuracy": 0.8667,
                  "sweeper_accuracy": 0.4196,
                  "goalkeeperValueNormalized": 0.2478,
                  "save_contribution": 3.1114,
                  "accurateKeeperSweeper": 0.7835
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.9353506565093994,
                    "model_output": 2.9354,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0415
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0394
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0368
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0362
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0362
                      }
                    ],
                    "decomposition": {
                      "base": 2.9286,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1773
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0733
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.037
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0253
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0211
                        }
                      ],
                      "others": 0.0273,
                      "total": 2.9353,
                      "log_link": true,
                      "margin_base": 1.074537,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.06245
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.026279
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.012997
                        },
                        {
                          "name": "saves",
                          "margin": 0.008804
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.007281
                        }
                      ],
                      "others_margin": 0.009377
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.10064171999692917,
                    "model_output": -0.1006,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "punches",
                        "importance": 0.041
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0398
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0385
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0374
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0356
                      }
                    ],
                    "decomposition": {
                      "base": -0.0166,
                      "items": [
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0245
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0189
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0185
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0167
                        },
                        {
                          "name": "goalsPrevented",
                          "contribution": -0.0166
                        }
                      ],
                      "others": -0.0222,
                      "total": -0.1006,
                      "log_link": false,
                      "margin_base": -0.016613,
                      "item_margins": [
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.024548
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": -0.018884
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.018525
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.016686
                        },
                        {
                          "name": "goalsPrevented",
                          "margin": -0.016566
                        }
                      ],
                      "others_margin": -0.022193
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.986282825469971,
                    "model_output": 6.9863,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0429
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0382
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0371
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.036
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0359
                      }
                    ],
                    "decomposition": {
                      "base": 7.0091,
                      "items": [
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0214
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0188
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0149
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0132
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.013
                        }
                      ],
                      "others": 0.0061,
                      "total": 6.9863,
                      "log_link": false,
                      "margin_base": 7.009122,
                      "item_margins": [
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.021359
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.018768
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.014949
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.013224
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.013049
                        }
                      ],
                      "others_margin": 0.005962
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 40,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0068, quality 0.710)",
              "stats": {
                "saves": 2.9553,
                "goals_prevented": -0.1013,
                "rating": 6.9863,
                "minutes": 28.5,
                "total_pass": 28.1635,
                "accurate_pass": 16.2919,
                "total_long_balls": 15.8599,
                "accurate_long_balls": 4.1132,
                "touches": 38.6007,
                "clearances": 1.7456,
                "ball_recovery": 9.0067,
                "high_claims": 0.8317,
                "punches": 1.3097,
                "aerial_won": 0.2142,
                "sweeper_actions": 0.7888,
                "sweeper_accurate": 0.7888,
                "saves_inside_box": 2.6363,
                "possession_lost": 11.8936,
                "duels_won": 0.2794,
                "duels_lost": 0.0543,
                "total_contest": 0.0036,
                "won_contest": 0.0036,
                "fouls": 0.0515,
                "fouls_drawn": 0.0239,
                "total_own_half_passes": 15.222,
                "accurate_own_half_passes": 13.4937
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0068,
                "reference_quality": 0.505,
                "history_matches": 40,
                "history_shrink": 0.1111,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0096)",
              "stats": {
                "saves": 2.9375,
                "goals_prevented": -0.1013,
                "rating": 6.9863,
                "minutes": 28.5,
                "total_pass": 28.1635,
                "accurate_pass": 16.2919,
                "total_long_balls": 15.8599,
                "accurate_long_balls": 4.1132,
                "touches": 38.6007,
                "clearances": 1.7456,
                "ball_recovery": 9.0067,
                "high_claims": 0.8317,
                "punches": 1.3097,
                "aerial_won": 0.2142,
                "sweeper_actions": 0.7888,
                "sweeper_accurate": 0.7888,
                "saves_inside_box": 2.6363,
                "possession_lost": 11.8936,
                "duels_won": 0.2794,
                "duels_lost": 0.0543,
                "total_contest": 0.0036,
                "won_contest": 0.0036,
                "fouls": 0.051,
                "fouls_drawn": 0.0237,
                "total_own_half_passes": 15.222,
                "accurate_own_half_passes": 13.4937
              },
              "params": {
                "blend_weight": 0.0096,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.3167,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.9553,
                  "after": 2.9375
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.5 to 5.5 expected minutes (appearance prob 0.15)",
              "stats": {
                "saves": 0.564,
                "goals_prevented": -0.0194,
                "rating": 6.9863,
                "minutes": 5.47,
                "total_pass": 5.407,
                "accurate_pass": 3.1278,
                "total_long_balls": 3.0449,
                "accurate_long_balls": 0.7897,
                "touches": 7.4108,
                "clearances": 0.3351,
                "ball_recovery": 1.7292,
                "high_claims": 0.1597,
                "punches": 0.2514,
                "aerial_won": 0.0411,
                "sweeper_actions": 0.1514,
                "sweeper_accurate": 0.1514,
                "saves_inside_box": 0.5061,
                "possession_lost": 2.2834,
                "duels_won": 0.0536,
                "duels_lost": 0.0104,
                "total_contest": 0.0007,
                "won_contest": 0.0007,
                "fouls": 0.0098,
                "fouls_drawn": 0.0046,
                "total_own_half_passes": 2.9224,
                "accurate_own_half_passes": 2.5906,
                "bench_appearance_probability": 0.154,
                "bench_expected_minutes": 5.47
              },
              "params": {
                "expected_minutes": 5.47,
                "projection_minutes": 28.5,
                "minutes_scale": 0.192,
                "appearance_probability": 0.154
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.564,
                "goals_prevented": -0.0194,
                "rating": 6.9863,
                "minutes": 5.47,
                "total_pass": 5.407,
                "accurate_pass": 3.1278,
                "total_long_balls": 3.0449,
                "accurate_long_balls": 0.7897,
                "touches": 7.4108,
                "clearances": 0.3351,
                "ball_recovery": 1.7292,
                "high_claims": 0.1597,
                "punches": 0.2514,
                "aerial_won": 0.0411,
                "sweeper_actions": 0.1514,
                "sweeper_accurate": 0.1514,
                "saves_inside_box": 0.5061,
                "possession_lost": 2.2834,
                "duels_won": 0.0536,
                "duels_lost": 0.0104,
                "total_contest": 0.0007,
                "won_contest": 0.0007,
                "fouls": 0.0098,
                "fouls_drawn": 0.0046,
                "total_own_half_passes": 2.9224,
                "accurate_own_half_passes": 2.5906,
                "bench_appearance_probability": 0.154,
                "bench_expected_minutes": 5.47
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.564,
                "goals_prevented": -0.0194,
                "rating": 6.9863,
                "minutes": 5.47,
                "total_pass": 5.407,
                "accurate_pass": 3.1278,
                "total_long_balls": 3.0449,
                "accurate_long_balls": 0.7897,
                "touches": 7.4108,
                "clearances": 0.3351,
                "ball_recovery": 1.7292,
                "high_claims": 0.1597,
                "punches": 0.2514,
                "aerial_won": 0.0411,
                "sweeper_actions": 0.1514,
                "sweeper_accurate": 0.1514,
                "saves_inside_box": 0.5061,
                "possession_lost": 2.2834,
                "duels_won": 0.0536,
                "duels_lost": 0.0104,
                "total_contest": 0.0007,
                "won_contest": 0.0007,
                "fouls": 0.0098,
                "fouls_drawn": 0.0046,
                "total_own_half_passes": 2.9224,
                "accurate_own_half_passes": 2.5906,
                "bench_appearance_probability": 0.154,
                "bench_expected_minutes": 5.47,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.154,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 82.0)",
              "stats": {
                "saves": 0.564,
                "goals_prevented": -0.0194,
                "rating": 6.9863,
                "minutes": 5.47,
                "total_pass": 5.407,
                "accurate_pass": 3.1278,
                "total_long_balls": 3.0449,
                "accurate_long_balls": 0.7897,
                "touches": 7.4108,
                "clearances": 0.3351,
                "ball_recovery": 1.7292,
                "high_claims": 0.1597,
                "punches": 0.2514,
                "aerial_won": 0.0411,
                "sweeper_actions": 0.1514,
                "sweeper_accurate": 0.1514,
                "saves_inside_box": 0.5061,
                "possession_lost": 2.2834,
                "duels_won": 0.0536,
                "duels_lost": 0.0104,
                "total_contest": 0.0007,
                "won_contest": 0.0007,
                "fouls": 0.0098,
                "fouls_drawn": 0.0046,
                "total_own_half_passes": 2.9224,
                "accurate_own_half_passes": 2.5906,
                "bench_appearance_probability": 0.154,
                "bench_expected_minutes": 5.47,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 824,
                "fifa_rank": 373.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            }
          ]
        },
        "Honest Ahanor": {
          "player_id": 1634980,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 21,
          "height": 184,
          "market_value": 41000000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.552,
            "minutes": 15,
            "total_pass": 48,
            "accurate_pass": 42,
            "duels_won": 8,
            "total_long_balls": 4,
            "accurate_long_balls": 1,
            "total_own_half_passes": 29,
            "accurate_own_half_passes": 27,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 15,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 68,
            "possession_lost": 8.89,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 4,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0077,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 23,
            "total_progression": 134,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.361,
            "bench_expected_minutes": 14.95,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 53,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 32,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 3
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 18,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0087,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 47,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3729,
            "combined_rank_score": 1714.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 637.0,
            "sofascore_rating": 6.7556,
            "sofascore_appearances": 9.0,
            "fifa_rank": 2791.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.552,
            "source_file": "data/player_rankings.csv",
            "player_name": "Honest Ahanor",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Facundo Bernal",
                  "ranking": 3724
                },
                {
                  "player_name": "Roberto Fernández",
                  "ranking": 3725
                },
                {
                  "player_name": "Veljko Birmančević",
                  "ranking": 3726
                },
                {
                  "player_name": "Jay DaSilva",
                  "ranking": 3727
                },
                {
                  "player_name": "Oskar Pietuszewski",
                  "ranking": 3728
                }
              ],
              "lower": [
                {
                  "player_name": "Alexandru Mitriță",
                  "ranking": 3730
                },
                {
                  "player_name": "Fabio Carvalho",
                  "ranking": 3731
                },
                {
                  "player_name": "Facundo Buonanotte",
                  "ranking": 3732
                },
                {
                  "player_name": "Shea Charles",
                  "ranking": 3733
                },
                {
                  "player_name": "Mojmír Chytil",
                  "ranking": 3734
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 14.952352570132028,
            "bench_appearance_prob": 0.36147057136963767,
            "market_value_adjustment": 1.0702,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (1 historical appearances) to 15.0 expected mins (appearance prob 0.36)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.5413,
                "tackles": 1.0219,
                "tackles_won": 0.6996,
                "clearances": 1.8129,
                "aerial_won": 0.5311,
                "total_shots": 0.2957,
                "rating": 6.552,
                "minutes": 18.0,
                "total_pass": 54.0,
                "accurate_pass": 47.0,
                "duels_won": 9.0,
                "total_long_balls": 5.0,
                "accurate_long_balls": 1.0,
                "total_own_half_passes": 33.0,
                "accurate_own_half_passes": 30.0,
                "total_opp_half_passes": 21.0,
                "accurate_opp_half_passes": 17.0,
                "crosses_total": 1.0,
                "crosses_accurate": 0.0,
                "touches": 77.0,
                "possession_lost": 10.0,
                "dispossessed": 0.0,
                "duels_lost": 4.0,
                "aerial_lost": 1.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.0,
                "challenges_lost": 1.0,
                "fouls": 2.0,
                "fouls_drawn": 5.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0087,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 26.0,
                "total_progression": 150.6598,
                "progressive_carries": 2.0,
                "key_pass": 1.0,
                "shots_off_target": 0.2957
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 1.0,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 8.0,
                  "aerialWon": 2.0,
                  "totalClearance_p90": 8.0,
                  "totalTackle": 2.0,
                  "totalPass": 54.0
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.5413184762001038,
                    "model_output": 0.5413,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4386
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0409
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0197
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0183
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0125
                        }
                      ],
                      "others": 0.0312,
                      "total": 0.5413,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.716729
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.093244
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.04199
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.037419
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.024867
                        }
                      ],
                      "others_margin": 0.059462
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.0218855142593384,
                    "model_output": 1.0219,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.6422
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1064
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0409
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0421
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0371
                        }
                      ],
                      "others": 0.0437,
                      "total": 1.0219,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.617504
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.132347
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.046612
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.045812
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.038676
                        }
                      ],
                      "others_margin": 0.043617
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6995731592178345,
                    "model_output": 0.6996,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3652
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.106
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0337
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0345
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0331
                        }
                      ],
                      "others": 0.0031,
                      "total": 0.6996,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.557741
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.196094
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.055051
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.05342
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.04868
                        }
                      ],
                      "others_margin": 0.004625
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.812882900238037,
                    "model_output": 1.8129,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.1232
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3442
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1068
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0887
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0872
                        }
                      ],
                      "others": 0.0352,
                      "total": 1.8129,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.95497
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.230459
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.061902
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.051136
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.050312
                        }
                      ],
                      "others_margin": 0.019567
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5311384201049805,
                    "model_output": 0.5311,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8745
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0811
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0711
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0489
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0418
                        }
                      ],
                      "others": -0.1357,
                      "total": 0.5311,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.001689
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.1483
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.114082
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.071472
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.060725
                        }
                      ],
                      "others_margin": -0.227725
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.29570791125297546,
                    "model_output": 0.2957,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1895
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0723
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0497
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0428
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0427
                        }
                      ],
                      "others": -0.0488,
                      "total": 0.2957,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.189478
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.072271
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.0497
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.042756
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.042745
                        }
                      ],
                      "others_margin": -0.048876
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.551986217498779,
                    "model_output": 6.552,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "duelWon",
                          "contribution": -0.0821
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0598
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0302
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0235
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.021
                        }
                      ],
                      "others": -0.0585,
                      "total": 6.552,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "duelWon",
                          "margin": -0.082111
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.059755
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.030163
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.023543
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.021022
                        }
                      ],
                      "others_margin": -0.058599
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 1,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0702, quality 0.786)",
              "stats": {
                "interceptions": 0.5793,
                "tackles": 1.0936,
                "tackles_won": 0.7487,
                "clearances": 1.9401,
                "aerial_won": 0.5684,
                "total_shots": 0.3165,
                "rating": 6.552,
                "minutes": 18.0,
                "total_pass": 57.7908,
                "accurate_pass": 50.2994,
                "duels_won": 9.6318,
                "total_long_balls": 5.351,
                "accurate_long_balls": 1.0702,
                "total_own_half_passes": 35.3166,
                "accurate_own_half_passes": 32.106,
                "total_opp_half_passes": 22.4742,
                "accurate_opp_half_passes": 18.1934,
                "crosses_total": 1.0702,
                "crosses_accurate": 0.0,
                "touches": 82.4054,
                "possession_lost": 10.702,
                "dispossessed": 0.0,
                "duels_lost": 4.2808,
                "aerial_lost": 1.0702,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.2808,
                "challenges_lost": 1.0702,
                "fouls": 2.1404,
                "fouls_drawn": 5.351,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0093,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 27.8252,
                "total_progression": 161.2361,
                "progressive_carries": 2.1404,
                "key_pass": 1.0702,
                "shots_off_target": 0.3165
              },
              "params": {
                "market_value_eur": 41000000,
                "quality_factor": 0.7859,
                "boost_factor": 1.0702,
                "reference_quality": 0.505,
                "history_matches": 1,
                "history_shrink": 0.8333,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.0 to 15.0 expected minutes (appearance prob 0.36)",
              "stats": {
                "interceptions": 0.4812,
                "tackles": 0.9084,
                "tackles_won": 0.6219,
                "clearances": 1.6116,
                "aerial_won": 0.4722,
                "total_shots": 0.2629,
                "rating": 6.552,
                "minutes": 14.95,
                "total_pass": 48.006,
                "accurate_pass": 41.783,
                "duels_won": 8.001,
                "total_long_balls": 4.445,
                "accurate_long_balls": 0.889,
                "total_own_half_passes": 29.337,
                "accurate_own_half_passes": 26.67,
                "total_opp_half_passes": 18.669,
                "accurate_opp_half_passes": 15.113,
                "crosses_total": 0.889,
                "crosses_accurate": 0.0,
                "touches": 68.453,
                "possession_lost": 8.89,
                "dispossessed": 0.0,
                "duels_lost": 3.556,
                "aerial_lost": 1.0702,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.556,
                "challenges_lost": 1.0702,
                "fouls": 1.778,
                "fouls_drawn": 4.445,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0077,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 23.114,
                "total_progression": 133.9366,
                "progressive_carries": 1.778,
                "key_pass": 0.889,
                "shots_off_target": 0.2629,
                "bench_appearance_probability": 0.361,
                "bench_expected_minutes": 14.95
              },
              "params": {
                "expected_minutes": 14.95,
                "projection_minutes": 18.0,
                "minutes_scale": 0.8307,
                "appearance_probability": 0.361
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.4812,
                "tackles": 0.9084,
                "tackles_won": 0.6219,
                "clearances": 1.6116,
                "aerial_won": 0.4722,
                "total_shots": 0.2629,
                "rating": 6.552,
                "minutes": 14.95,
                "total_pass": 48.006,
                "accurate_pass": 41.783,
                "duels_won": 8.001,
                "total_long_balls": 4.445,
                "accurate_long_balls": 0.889,
                "total_own_half_passes": 29.337,
                "accurate_own_half_passes": 26.67,
                "total_opp_half_passes": 18.669,
                "accurate_opp_half_passes": 15.113,
                "crosses_total": 0.889,
                "crosses_accurate": 0.0,
                "touches": 68.453,
                "possession_lost": 8.89,
                "dispossessed": 0.0,
                "duels_lost": 3.556,
                "aerial_lost": 1.0702,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.556,
                "challenges_lost": 1.0702,
                "fouls": 1.778,
                "fouls_drawn": 4.445,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0077,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 23.114,
                "total_progression": 133.9366,
                "progressive_carries": 1.778,
                "key_pass": 0.889,
                "shots_off_target": 0.2629,
                "bench_appearance_probability": 0.361,
                "bench_expected_minutes": 14.95
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.4812,
                "tackles": 0.9084,
                "tackles_won": 0.6219,
                "clearances": 1.6116,
                "aerial_won": 0.4722,
                "total_shots": 0.2629,
                "rating": 6.552,
                "minutes": 14.95,
                "total_pass": 48.006,
                "accurate_pass": 41.783,
                "duels_won": 8.001,
                "total_long_balls": 4.445,
                "accurate_long_balls": 0.889,
                "total_own_half_passes": 29.337,
                "accurate_own_half_passes": 26.67,
                "total_opp_half_passes": 18.669,
                "accurate_opp_half_passes": 15.113,
                "crosses_total": 0.889,
                "crosses_accurate": 0.0,
                "touches": 68.453,
                "possession_lost": 8.89,
                "dispossessed": 0.0,
                "duels_lost": 3.556,
                "aerial_lost": 1.0702,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.556,
                "challenges_lost": 1.0702,
                "fouls": 1.778,
                "fouls_drawn": 4.445,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0077,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 23.114,
                "total_progression": 133.9366,
                "progressive_carries": 1.778,
                "key_pass": 0.889,
                "shots_off_target": 0.2629,
                "bench_appearance_probability": 0.361,
                "bench_expected_minutes": 14.95,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.361,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 74.0)",
              "stats": {
                "interceptions": 0.4812,
                "tackles": 0.9084,
                "tackles_won": 0.6219,
                "clearances": 1.6116,
                "aerial_won": 0.4722,
                "total_shots": 0.2629,
                "rating": 6.552,
                "minutes": 14.95,
                "total_pass": 48.006,
                "accurate_pass": 41.783,
                "duels_won": 8.001,
                "total_long_balls": 4.445,
                "accurate_long_balls": 0.889,
                "total_own_half_passes": 29.337,
                "accurate_own_half_passes": 26.67,
                "total_opp_half_passes": 18.669,
                "accurate_opp_half_passes": 15.113,
                "crosses_total": 0.889,
                "crosses_accurate": 0.0,
                "touches": 68.453,
                "possession_lost": 8.89,
                "dispossessed": 0.0,
                "duels_lost": 3.556,
                "aerial_lost": 1.0702,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 3.556,
                "challenges_lost": 1.0702,
                "fouls": 1.778,
                "fouls_drawn": 4.445,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0077,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 23.114,
                "total_progression": 133.9366,
                "progressive_carries": 1.778,
                "key_pass": 0.889,
                "shots_off_target": 0.2629,
                "bench_appearance_probability": 0.361,
                "bench_expected_minutes": 14.95,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3729,
                "fifa_rank": 2791.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Chadi Riad": {
          "player_id": 1064218,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 186,
          "market_value": 19400000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7598,
            "minutes": 14,
            "total_pass": 15,
            "accurate_pass": 12,
            "duels_won": 1,
            "total_long_balls": 2,
            "accurate_long_balls": 0,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 3.6223,
            "dispossessed": 0.2843,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.1551,
            "assists": 0,
            "expected_goals": 0.0139,
            "expected_assists": 0.0028,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 23,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.232,
            "bench_expected_minutes": 14.32,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 72,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0067,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 46,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1848,
                "expected_assists": 0.0257,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 42,
                "accurate_pass": 39,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 5,
                "duels_won": 2,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 74,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.035,
                "expected_assists": 0.0028,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 17,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024023,
              "match_date": "2026-05-03",
              "home_team": "Bournemouth",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 76,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0473,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 35,
                "tackles": 2,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023981,
              "match_date": "2026-03-05",
              "home_team": "Tottenham Hotspur",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0204,
                "total_shots": 0,
                "total_pass": 74,
                "accurate_pass": 68,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023978,
              "match_date": "2026-03-01",
              "home_team": "Manchester United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 32,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 17,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024008,
              "match_date": "2026-02-22",
              "home_team": "Crystal Palace",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 72,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0179,
                "expected_assists": 0.0049,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 43,
                "accurate_pass": 37,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025209,
              "match_date": "2026-02-11",
              "home_team": "Crystal Palace",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Burnley",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.01,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 35,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025143,
              "match_date": "2026-02-01",
              "home_team": "Nottingham Forest",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 61,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0158,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 62,
                "interceptions": 1,
                "clearances": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025107,
              "match_date": "2026-01-25",
              "home_team": "Crystal Palace",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 14,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0883,
                "expected_assists": 0.0003,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3789,
            "combined_rank_score": 1771.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 856.0,
            "sofascore_rating": 6.5667,
            "sofascore_appearances": 9.0,
            "fifa_rank": 2686.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7598,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chadi Riad",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas Vázquez",
                  "ranking": 3784
                },
                {
                  "player_name": "Çağlar Söyüncü",
                  "ranking": 3785
                },
                {
                  "player_name": "Victor Nelsson",
                  "ranking": 3786
                },
                {
                  "player_name": "Ilyas Ansah",
                  "ranking": 3787
                },
                {
                  "player_name": "Kristjan Asllani",
                  "ranking": 3788
                }
              ],
              "lower": [
                {
                  "player_name": "Adalberto Carrasquilla",
                  "ranking": 3790
                },
                {
                  "player_name": "Tyler Dibling",
                  "ranking": 3791
                },
                {
                  "player_name": "Jacob Widell Zetterström",
                  "ranking": 3792
                },
                {
                  "player_name": "Maxime Crépeau",
                  "ranking": 3793
                },
                {
                  "player_name": "Pau Navarro",
                  "ranking": 3794
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.758,
          "history_matches": 10,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 10,
            "data_confidence": 0.758,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.3154732112477,
            "bench_appearance_prob": 0.232,
            "market_value_adjustment": 1.012,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0533
            },
            "rationale": "Bench projection scaled from XGBoost D_service (10 historical appearances) to 14.3 expected mins (appearance prob 0.23); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3863,
                "tackles": 0.5511,
                "tackles_won": 0.3815,
                "clearances": 1.8728,
                "aerial_won": 0.7364,
                "total_shots": 0.2809,
                "rating": 6.7598,
                "minutes": 25.94,
                "total_pass": 27.3683,
                "accurate_pass": 21.8241,
                "duels_won": 2.6025,
                "total_long_balls": 2.9417,
                "accurate_long_balls": 0.6696,
                "total_own_half_passes": 16.4121,
                "accurate_own_half_passes": 14.3713,
                "total_opp_half_passes": 10.9563,
                "accurate_opp_half_passes": 7.4529,
                "crosses_total": 0.6608,
                "crosses_accurate": 0.0,
                "touches": 32.863,
                "possession_lost": 6.4859,
                "dispossessed": 0.2809,
                "duels_lost": 3.2157,
                "aerial_lost": 1.4383,
                "total_contest": 0.2809,
                "won_contest": 0.2809,
                "ball_recovery": 0.6113,
                "challenges_lost": 0.7775,
                "fouls": 0.7191,
                "fouls_drawn": 0.3304,
                "blocks": 0.3887,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2809,
                "assist_rate": 0.2809,
                "expected_goals": 0.0248,
                "expected_assists": 0.005,
                "shots_on_target": 0.2809,
                "big_chances_created": 0.2809,
                "xgot": 0.0,
                "ball_carries": 10.1808,
                "total_progression": 40.4905,
                "progressive_carries": 0.0,
                "key_pass": 0.2809,
                "shots_off_target": 0.0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.1868,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1588,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1349,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1147,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0975,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Manchester United",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Wolverhampton",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0704,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-02-11",
                    "opponent": "Burnley",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0599,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-02-01",
                    "opponent": "Nottingham Forest",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0509,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-01-25",
                    "opponent": "Chelsea",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0433,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.9627,
                  "aerialWon": 1.4097,
                  "totalClearance_p90": 4.7919,
                  "totalTackle": 1.109,
                  "totalPass": 42.7878
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.38634970784187317,
                    "model_output": 0.3863,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4808
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0242
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0106
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.008
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0073
                        }
                      ],
                      "others": -0.0257,
                      "total": 0.3863,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.822979
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.062261
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.026023
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.019192
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": -0.017516
                        }
                      ],
                      "others_margin": -0.063993
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5510692596435547,
                    "model_output": 0.5511,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7605
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0183
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.015
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0129
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0112
                        }
                      ],
                      "others": -0.0249,
                      "total": 0.5511,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.788755
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.02933
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.02466
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.021648
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.019212
                        }
                      ],
                      "others_margin": -0.04438
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3814844489097595,
                    "model_output": 0.3815,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4363
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0112
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0105
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0097
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0071
                        }
                      ],
                      "others": 0.0019,
                      "total": 0.3815,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.714712
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.027088
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": -0.026116
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.024734
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.018638
                        }
                      ],
                      "others_margin": 0.005016
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.8728229999542236,
                    "model_output": 1.8728,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0971
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2196
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.107
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1026
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0486
                        }
                      ],
                      "others": 0.0407,
                      "total": 1.8728,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.935467
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.150292
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.065758
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.059254
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.026908
                        }
                      ],
                      "others_margin": 0.021918
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.736380398273468,
                    "model_output": 0.7364,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7753
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0357
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0332
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0312
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0304
                        }
                      ],
                      "others": -0.0008,
                      "total": 0.7364,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.823268
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.057128
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.050351
                        },
                        {
                          "name": "error_severity",
                          "margin": 0.045111
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.042068
                        }
                      ],
                      "others_margin": -0.000953
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.2809,
                    "model_output": 0.1468,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2362
                        },
                        {
                          "name": "rating",
                          "contribution": -0.032
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0139
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0084
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0069
                        }
                      ],
                      "others": -0.0269,
                      "total": 0.1468,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.236226
                        },
                        {
                          "name": "rating",
                          "margin": -0.031967
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.013943
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.008368
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.006902
                        }
                      ],
                      "others_margin": -0.026884
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.759775161743164,
                    "model_output": 6.7598,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0222
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0167
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0158
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0116
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0084
                        }
                      ],
                      "others": 0.0178,
                      "total": 6.7598,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.022177
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.016654
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.015814
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011553
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.008405
                        }
                      ],
                      "others_margin": 0.017619
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 10,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0120, quality 0.625)",
              "stats": {
                "interceptions": 0.391,
                "tackles": 0.5577,
                "tackles_won": 0.3861,
                "clearances": 1.8953,
                "aerial_won": 0.7452,
                "total_shots": 0.2843,
                "rating": 6.7598,
                "minutes": 25.94,
                "total_pass": 27.6967,
                "accurate_pass": 22.086,
                "duels_won": 2.6337,
                "total_long_balls": 2.977,
                "accurate_long_balls": 0.6776,
                "total_own_half_passes": 16.609,
                "accurate_own_half_passes": 14.5438,
                "total_opp_half_passes": 11.0878,
                "accurate_opp_half_passes": 7.5423,
                "crosses_total": 0.6687,
                "crosses_accurate": 0.0,
                "touches": 33.2574,
                "possession_lost": 6.5637,
                "dispossessed": 0.2843,
                "duels_lost": 3.2543,
                "aerial_lost": 1.4556,
                "total_contest": 0.2843,
                "won_contest": 0.2843,
                "ball_recovery": 0.6186,
                "challenges_lost": 0.7868,
                "fouls": 0.7277,
                "fouls_drawn": 0.3344,
                "blocks": 0.3934,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2843,
                "assist_rate": 0.2843,
                "expected_goals": 0.0251,
                "expected_assists": 0.0051,
                "shots_on_target": 0.2843,
                "big_chances_created": 0.2843,
                "xgot": 0.0,
                "ball_carries": 10.303,
                "total_progression": 40.9764,
                "progressive_carries": 0.0,
                "key_pass": 0.2843,
                "shots_off_target": 0.0
              },
              "params": {
                "market_value_eur": 19400000,
                "quality_factor": 0.6251,
                "boost_factor": 1.012,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0115)",
              "stats": {
                "interceptions": 0.3906,
                "tackles": 0.5577,
                "tackles_won": 0.3858,
                "clearances": 1.8953,
                "aerial_won": 0.7452,
                "total_shots": 0.281,
                "rating": 6.7598,
                "minutes": 25.94,
                "total_pass": 27.6967,
                "accurate_pass": 22.086,
                "duels_won": 2.6337,
                "total_long_balls": 2.977,
                "accurate_long_balls": 0.6776,
                "total_own_half_passes": 16.609,
                "accurate_own_half_passes": 14.5438,
                "total_opp_half_passes": 11.0878,
                "accurate_opp_half_passes": 7.5423,
                "crosses_total": 0.661,
                "crosses_accurate": 0.0,
                "touches": 33.2574,
                "possession_lost": 6.5637,
                "dispossessed": 0.2843,
                "duels_lost": 3.2543,
                "aerial_lost": 1.4556,
                "total_contest": 0.2843,
                "won_contest": 0.2843,
                "ball_recovery": 0.6186,
                "challenges_lost": 0.7868,
                "fouls": 0.7276,
                "fouls_drawn": 0.3305,
                "blocks": 0.3934,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.281,
                "assist_rate": 0.281,
                "expected_goals": 0.0251,
                "expected_assists": 0.0051,
                "shots_on_target": 0.281,
                "big_chances_created": 0.2843,
                "xgot": 0.0,
                "ball_carries": 10.303,
                "total_progression": 40.9764,
                "progressive_carries": 0.0,
                "key_pass": 0.2843,
                "shots_off_target": 0.0
              },
              "params": {
                "blend_weight": 0.0115,
                "history_matches": 10,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2882,
                "prior_reliability": 0.0533,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.6687,
                  "after": 0.661
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 25.9 to 14.3 expected minutes (appearance prob 0.23)",
              "stats": {
                "interceptions": 0.2156,
                "tackles": 0.3078,
                "tackles_won": 0.2129,
                "clearances": 1.046,
                "aerial_won": 0.4113,
                "total_shots": 0.1551,
                "rating": 6.7598,
                "minutes": 14.32,
                "total_pass": 15.2849,
                "accurate_pass": 12.1886,
                "duels_won": 1.4535,
                "total_long_balls": 1.6429,
                "accurate_long_balls": 0.3739,
                "total_own_half_passes": 9.166,
                "accurate_own_half_passes": 8.0263,
                "total_opp_half_passes": 6.119,
                "accurate_opp_half_passes": 4.1624,
                "crosses_total": 0.3648,
                "crosses_accurate": 0.0,
                "touches": 18.3537,
                "possession_lost": 3.6223,
                "dispossessed": 0.2843,
                "duels_lost": 1.7959,
                "aerial_lost": 1.4556,
                "total_contest": 0.1569,
                "won_contest": 0.1569,
                "ball_recovery": 0.3414,
                "challenges_lost": 0.7868,
                "fouls": 0.4015,
                "fouls_drawn": 0.1824,
                "blocks": 0.2171,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1551,
                "assist_rate": 0.1551,
                "expected_goals": 0.0139,
                "expected_assists": 0.0028,
                "shots_on_target": 0.1551,
                "big_chances_created": 0.1569,
                "xgot": 0.0,
                "ball_carries": 5.6859,
                "total_progression": 22.6136,
                "progressive_carries": 0.0,
                "key_pass": 0.1569,
                "shots_off_target": 0.0,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32
              },
              "params": {
                "expected_minutes": 14.32,
                "projection_minutes": 25.94,
                "minutes_scale": 0.5519,
                "appearance_probability": 0.232
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2156,
                "tackles": 0.3078,
                "tackles_won": 0.2129,
                "clearances": 1.046,
                "aerial_won": 0.4113,
                "total_shots": 0.1551,
                "rating": 6.7598,
                "minutes": 14.32,
                "total_pass": 15.2849,
                "accurate_pass": 12.1886,
                "duels_won": 1.4535,
                "total_long_balls": 1.6429,
                "accurate_long_balls": 0.3739,
                "total_own_half_passes": 9.166,
                "accurate_own_half_passes": 8.0263,
                "total_opp_half_passes": 6.119,
                "accurate_opp_half_passes": 4.1624,
                "crosses_total": 0.3648,
                "crosses_accurate": 0.0,
                "touches": 18.3537,
                "possession_lost": 3.6223,
                "dispossessed": 0.2843,
                "duels_lost": 1.7959,
                "aerial_lost": 1.4556,
                "total_contest": 0.1569,
                "won_contest": 0.1569,
                "ball_recovery": 0.3414,
                "challenges_lost": 0.7868,
                "fouls": 0.4015,
                "fouls_drawn": 0.1824,
                "blocks": 0.2171,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1551,
                "assist_rate": 0.1551,
                "expected_goals": 0.0139,
                "expected_assists": 0.0028,
                "shots_on_target": 0.1551,
                "big_chances_created": 0.1569,
                "xgot": 0.0,
                "ball_carries": 5.6859,
                "total_progression": 22.6136,
                "progressive_carries": 0.0,
                "key_pass": 0.1569,
                "shots_off_target": 0.0,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.2156,
                "tackles": 0.3078,
                "tackles_won": 0.2129,
                "clearances": 1.046,
                "aerial_won": 0.4113,
                "total_shots": 0.1551,
                "rating": 6.7598,
                "minutes": 14.32,
                "total_pass": 15.2849,
                "accurate_pass": 12.1886,
                "duels_won": 1.4535,
                "total_long_balls": 1.6429,
                "accurate_long_balls": 0.3739,
                "total_own_half_passes": 9.166,
                "accurate_own_half_passes": 8.0263,
                "total_opp_half_passes": 6.119,
                "accurate_opp_half_passes": 4.1624,
                "crosses_total": 0.3648,
                "crosses_accurate": 0.0,
                "touches": 18.3537,
                "possession_lost": 3.6223,
                "dispossessed": 0.2843,
                "duels_lost": 1.7959,
                "aerial_lost": 1.4556,
                "total_contest": 0.1569,
                "won_contest": 0.1569,
                "ball_recovery": 0.3414,
                "challenges_lost": 0.7868,
                "fouls": 0.4015,
                "fouls_drawn": 0.1824,
                "blocks": 0.2171,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1551,
                "assists": 0,
                "expected_goals": 0.0139,
                "expected_assists": 0.0028,
                "shots_on_target": 0.1551,
                "big_chances_created": 0.1569,
                "xgot": 0.0,
                "ball_carries": 5.6859,
                "total_progression": 22.6136,
                "progressive_carries": 0.0,
                "key_pass": 0.1569,
                "shots_off_target": 0.0,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.232,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 74.0)",
              "stats": {
                "interceptions": 0.2156,
                "tackles": 0.3078,
                "tackles_won": 0.2129,
                "clearances": 1.046,
                "aerial_won": 0.4113,
                "total_shots": 0.1551,
                "rating": 6.7598,
                "minutes": 14.32,
                "total_pass": 15.2849,
                "accurate_pass": 12.1886,
                "duels_won": 1.4535,
                "total_long_balls": 1.6429,
                "accurate_long_balls": 0.3739,
                "total_own_half_passes": 9.166,
                "accurate_own_half_passes": 8.0263,
                "total_opp_half_passes": 6.119,
                "accurate_opp_half_passes": 4.1624,
                "crosses_total": 0.3648,
                "crosses_accurate": 0.0,
                "touches": 18.3537,
                "possession_lost": 3.6223,
                "dispossessed": 0.2843,
                "duels_lost": 1.7959,
                "aerial_lost": 1.4556,
                "total_contest": 0.1569,
                "won_contest": 0.1569,
                "ball_recovery": 0.3414,
                "challenges_lost": 0.7868,
                "fouls": 0.4015,
                "fouls_drawn": 0.1824,
                "blocks": 0.2171,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1551,
                "assists": 0,
                "expected_goals": 0.0139,
                "expected_assists": 0.0028,
                "shots_on_target": 0.1551,
                "big_chances_created": 0.1569,
                "xgot": 0.0,
                "ball_carries": 5.6859,
                "total_progression": 22.6136,
                "progressive_carries": 0.0,
                "key_pass": 0.1569,
                "shots_off_target": 0.0,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3789,
                "fifa_rank": 2686.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Quinten Timber": {
          "player_id": 959805,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 177,
          "market_value": 24000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0353,
            "assist_rate": 0.0657,
            "assists": 0,
            "expected_goals": 0.0357,
            "goal_rate": 0.1003,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.763,
            "minutes": 23,
            "total_pass": 40,
            "accurate_pass": 32,
            "duels_won": 9,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 16,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 16,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 63,
            "possession_lost": 13.976,
            "dispossessed": 1.0908,
            "duels_lost": 6,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 5,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0154,
            "ball_carries": 17,
            "total_progression": 93,
            "progressive_carries": 3,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.54,
            "bench_expected_minutes": 22.89,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0345,
            "projected_assists": 0,
            "assist_probability": 0.0342,
            "finishing_factor": 1.25,
            "creation_factor": 1.1687,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 45,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1398,
                "expected_assists": 0.0773,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1185,
                "expected_assists": 0.0307,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 27,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1028,
                "expected_assists": 0.0329,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 46,
                "accurate_pass": 35,
                "tackles": 8,
                "tackles_won": 4,
                "clearances": 2,
                "duels_won": 13,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 74,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0195,
                "expected_assists": 0.0022,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1488,
            "combined_rank_score": 616.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 3.0,
            "fifa_rank": 896.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.763,
            "source_file": "data/player_rankings.csv",
            "player_name": "Quinten Timber",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Bojan Mlađović",
                  "ranking": 1483
                },
                {
                  "player_name": "Farkhod Sokhibzhonov",
                  "ranking": 1484
                },
                {
                  "player_name": "Florian Lejeune",
                  "ranking": 1485
                },
                {
                  "player_name": "Dimitrios Valkanis",
                  "ranking": 1486
                },
                {
                  "player_name": "Patrick Dorgu",
                  "ranking": 1487
                }
              ],
              "lower": [
                {
                  "player_name": "Jon Pacheco",
                  "ranking": 1489
                },
                {
                  "player_name": "Brahim Díaz",
                  "ranking": 1490
                },
                {
                  "player_name": "Lucas Assadi",
                  "ranking": 1491
                },
                {
                  "player_name": "Bryan Cristante",
                  "ranking": 1492
                },
                {
                  "player_name": "Lucas Hernández",
                  "ranking": 1493
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.88735814265611,
            "bench_appearance_prob": 0.5403344610298232,
            "market_value_adjustment": 1.0307,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (3 historical appearances) to 22.9 expected mins (appearance prob 0.54)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4813,
                "expected_assists": 0.0395,
                "assists": 0.0529,
                "assist_rate": 0.0529,
                "expected_goals": 0.045,
                "goals": 0.0808,
                "goal_rate": 0.0808,
                "shots_on_target": 0.1738,
                "total_shots": 0.5917,
                "rating": 6.763,
                "minutes": 19.0,
                "total_pass": 32.3052,
                "accurate_pass": 25.4306,
                "duels_won": 7.0816,
                "total_long_balls": 2.9417,
                "accurate_long_balls": 1.3887,
                "total_own_half_passes": 13.4121,
                "accurate_own_half_passes": 12.52,
                "total_opp_half_passes": 18.8931,
                "accurate_opp_half_passes": 12.9106,
                "crosses_total": 0.7191,
                "crosses_accurate": 0.0,
                "touches": 50.9174,
                "possession_lost": 11.2566,
                "dispossessed": 1.0583,
                "duels_lost": 4.5053,
                "aerial_won": 0.3887,
                "aerial_lost": 1.3887,
                "interceptions": 0.6696,
                "tackles_won": 1.9913,
                "tackles": 3.7017,
                "clearances": 1.0496,
                "total_contest": 1.7104,
                "won_contest": 0.9913,
                "challenges_lost": 0.3887,
                "fouls": 1.3392,
                "fouls_drawn": 2.0,
                "blocks": 0.2809,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0194,
                "ball_carries": 13.4072,
                "total_progression": 74.5304,
                "progressive_carries": 2.7687,
                "shots_off_target": 0.4179
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.7191,
                  "creative_index": 0.325,
                  "expectedGoals": 0.0855,
                  "expectedAssists": 0.0234,
                  "onTargetScoringAttempt": 0.3304
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4813484847545624,
                    "model_output": 0.4813,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3295
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0745
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0534
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.038
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0315
                        }
                      ],
                      "others": -0.09,
                      "total": 0.4813,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.464915
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.125637
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.088374
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.068115
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.056653
                        }
                      ],
                      "others_margin": -0.171235
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.039462026208639145,
                    "model_output": 0.0395,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0339
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0076
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0036
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.003
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.0395,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.501973
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.158032
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.084826
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.070318
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.050379
                        }
                      ],
                      "others_margin": -0.051478
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.052858591079711914,
                    "model_output": 0.0529,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0206
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0045
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0043
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0036
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0055,
                      "total": 0.0529,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.277154
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.072372
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.068624
                        },
                        {
                          "name": "goals",
                          "margin": -0.056884
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.04107
                        }
                      ],
                      "others_margin": -0.098873
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04498733952641487,
                    "model_output": 0.045,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0403
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0089
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0028
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.045,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.556549
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.152443
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.094997
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.078026
                        },
                        {
                          "name": "goals",
                          "margin": -0.055072
                        }
                      ],
                      "others_margin": -0.109254
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.0807780995965004,
                    "model_output": 0.0808,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0404
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.02
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0082
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0068
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0045
                        }
                      ],
                      "others": -0.0023,
                      "total": 0.0808,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.53325
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.298889
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.101061
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.082612
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.056006
                        }
                      ],
                      "others_margin": -0.029728
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.17378737032413483,
                    "model_output": 0.1738,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1504
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0156
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0112
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0075
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.1738,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.62413
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.21186
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07545
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058114
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.040772
                        }
                      ],
                      "others_margin": -0.036278
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5916868448257446,
                    "model_output": 0.5917,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5022
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2742
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0501
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0439
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0423
                        }
                      ],
                      "others": -0.0345,
                      "total": 0.5917,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.502174
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.274159
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.050108
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.043869
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.042313
                        }
                      ],
                      "others_margin": -0.034472
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.763008117675781,
                    "model_output": 6.763,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0873
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0632
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.016
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0158
                        },
                        {
                          "name": "history_matches",
                          "contribution": -0.0116
                        }
                      ],
                      "others": -0.05,
                      "total": 6.763,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.087284
                        },
                        {
                          "name": "rating",
                          "margin": 0.063206
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.016021
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.015844
                        },
                        {
                          "name": "history_matches",
                          "margin": -0.01159
                        }
                      ],
                      "others_margin": -0.050019
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0307, quality 0.669)",
              "stats": {
                "key_pass": 0.4961,
                "expected_assists": 0.0407,
                "assists": 0.0545,
                "assist_rate": 0.0545,
                "expected_goals": 0.0464,
                "goals": 0.0833,
                "goal_rate": 0.0833,
                "shots_on_target": 0.1791,
                "total_shots": 0.6099,
                "rating": 6.763,
                "minutes": 19.0,
                "total_pass": 33.297,
                "accurate_pass": 26.2113,
                "duels_won": 7.299,
                "total_long_balls": 3.032,
                "accurate_long_balls": 1.4313,
                "total_own_half_passes": 13.8239,
                "accurate_own_half_passes": 12.9044,
                "total_opp_half_passes": 19.4731,
                "accurate_opp_half_passes": 13.307,
                "crosses_total": 0.7412,
                "crosses_accurate": 0.0,
                "touches": 52.4806,
                "possession_lost": 11.6022,
                "dispossessed": 1.0908,
                "duels_lost": 4.6436,
                "aerial_won": 0.4006,
                "aerial_lost": 1.4313,
                "interceptions": 0.6902,
                "tackles_won": 2.0524,
                "tackles": 3.8153,
                "clearances": 1.0818,
                "total_contest": 1.7629,
                "won_contest": 1.0217,
                "challenges_lost": 0.4006,
                "fouls": 1.3803,
                "fouls_drawn": 2.0614,
                "blocks": 0.2895,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.02,
                "ball_carries": 13.8188,
                "total_progression": 76.8185,
                "progressive_carries": 2.8537,
                "shots_off_target": 0.4307
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0307,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.0 to 22.9 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.049,
                "assists": 0.0657,
                "assist_rate": 0.0657,
                "expected_goals": 0.0559,
                "goals": 0.1003,
                "goal_rate": 0.1003,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0241,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "expected_minutes": 22.89,
                "projection_minutes": 19.0,
                "minutes_scale": 1.2046,
                "appearance_probability": 0.54
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.049,
                "assists": 0.0657,
                "assist_rate": 0.0657,
                "expected_goals": 0.0559,
                "goals": 0.1003,
                "goal_rate": 0.1003,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0241,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.049,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0559,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0241,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.54
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0559,
                  "after": 0.0357
                },
                {
                  "stat": "expected_assists",
                  "before": 0.049,
                  "after": 0.0353
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1488,
                "fifa_rank": 896.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0345,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0345,
                "goal_rate": 0.1003,
                "scorer_weight": 0.0446,
                "squad_weight_total": 1.6514,
                "weight_share": 0.027,
                "finishing_factor": 1.25,
                "appearance_weight": 0.54,
                "weight_rank": 12,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0345,
                "projected_assists": 0,
                "assist_probability": 0.0342,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0342,
                "assist_rate": 0.0657,
                "provider_weight": 0.0413,
                "squad_weight_total": 0.917,
                "weight_share": 0.045,
                "creation_factor": 1.1687,
                "appearance_weight": 0.54,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Óscar Mingueza": {
          "player_id": 859773,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 184,
          "market_value": 18700000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0387,
            "assist_rate": 0.044,
            "assists": 0,
            "expected_goals": 0.0171,
            "goal_rate": 0.0256,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.718,
            "minutes": 19,
            "total_pass": 15,
            "accurate_pass": 12,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 4.5601,
            "dispossessed": 0.1476,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 17,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.707,
            "bench_expected_minutes": 19.01,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0169,
            "projected_assists": 0,
            "assist_probability": 0.0377,
            "finishing_factor": 1.0723,
            "creation_factor": 1.0318,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 15,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0188,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 14,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3096,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 21,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 89,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.063,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 9,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 12,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083248,
              "match_date": "2026-04-26",
              "home_team": "Villarreal",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3524,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 61,
                "key_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083261,
              "match_date": "2026-04-22",
              "home_team": "FC Barcelona",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0257,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 12,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083123,
              "match_date": "2026-04-12",
              "home_team": "Celta Vigo",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 30,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2694,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 24,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 896,
            "combined_rank_score": 419.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 419.0,
            "sofascore_rating": 6.9242,
            "sofascore_appearances": 34.0,
            "fifa_rank": 420.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.718,
            "source_file": "data/player_rankings.csv",
            "player_name": "Óscar Mingueza",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alexis Saelemaekers",
                  "ranking": 891
                },
                {
                  "player_name": "Malick Thiaw",
                  "ranking": 892
                },
                {
                  "player_name": "Maxence Lacroix",
                  "ranking": 893
                },
                {
                  "player_name": "Matty Cash",
                  "ranking": 894
                },
                {
                  "player_name": "Stefan de Vrij",
                  "ranking": 895
                }
              ],
              "lower": [
                {
                  "player_name": "Moleiro",
                  "ranking": 897
                },
                {
                  "player_name": "Fabián Hormazábal",
                  "ranking": 898
                },
                {
                  "player_name": "Do-hyeok Kim",
                  "ranking": 899
                },
                {
                  "player_name": "Jorge de Frutos",
                  "ranking": 900
                },
                {
                  "player_name": "Bruno Silva",
                  "ranking": 901
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 19.01,
            "bench_appearance_prob": 0.707,
            "market_value_adjustment": 1.0041,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 16.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (36 historical appearances) to 19.0 expected mins (appearance prob 0.71); FBref playing time empirical prior: 1.0 sub appearances, 16.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4637,
                "expected_assists": 0.0383,
                "assists": 0.041,
                "assist_rate": 0.041,
                "expected_goals": 0.0191,
                "goals": 0.0239,
                "goal_rate": 0.0239,
                "shots_on_target": 0.0749,
                "total_shots": 0.2752,
                "rating": 6.718,
                "minutes": 17.82,
                "total_pass": 13.6343,
                "accurate_pass": 11.4926,
                "duels_won": 1.2614,
                "total_long_balls": 1.0371,
                "accurate_long_balls": 0.373,
                "total_own_half_passes": 4.4892,
                "accurate_own_half_passes": 3.71,
                "total_opp_half_passes": 9.1451,
                "accurate_opp_half_passes": 7.7827,
                "crosses_total": 1.1259,
                "crosses_accurate": 0.1877,
                "touches": 20.2978,
                "possession_lost": 4.2571,
                "dispossessed": 0.147,
                "duels_lost": 1.2482,
                "aerial_won": 0.1243,
                "aerial_lost": 0.2223,
                "interceptions": 0.0169,
                "tackles_won": 0.5856,
                "tackles": 0.8784,
                "clearances": 0.3482,
                "total_contest": 0.2031,
                "won_contest": 0.1027,
                "challenges_lost": 0.4485,
                "fouls": 0.33,
                "fouls_drawn": 0.156,
                "blocks": 0.0881,
                "big_chances_created": 0.1385,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 15.58,
                "progressive_carries": 0.3598,
                "shots_off_target": 0.2003
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1279,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1087,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0924,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0785,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "FC Barcelona",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Real Oviedo",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.0647,
                  "creative_index": 0.2836,
                  "expectedGoals": 0.0016,
                  "expectedAssists": 0.0715,
                  "onTargetScoringAttempt": 0.0303
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.46372485160827637,
                    "model_output": 0.4637,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4087
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0312
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0158
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0161
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0152
                        }
                      ],
                      "others": 0.0007,
                      "total": 0.4637,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.618317
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.067479
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.034859
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.034192
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.032287
                        }
                      ],
                      "others_margin": 0.001384
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03831956908106804,
                    "model_output": 0.0383,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0404
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0028
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0021
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0015
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0015
                        }
                      ],
                      "others": -0.0022,
                      "total": 0.0383,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.636589
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.063308
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.050095
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.037917
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.037875
                        }
                      ],
                      "others_margin": -0.055712
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04099714010953903,
                    "model_output": 0.041,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0243
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0045
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0034
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0034
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.041,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.33544
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07723
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.06227
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.061869
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.060713
                        }
                      ],
                      "others_margin": -0.258062
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.019108762964606285,
                    "model_output": 0.0191,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0371
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0197
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0117
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.002
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0031,
                      "total": 0.0191,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.498632
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.420662
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.373756
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.079364
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.074477
                        }
                      ],
                      "others_margin": -0.150799
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.023888500407338142,
                    "model_output": 0.0239,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0371
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0157
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0084
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0026
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0075,
                      "total": 0.0239,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.477263
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.299177
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.207005
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.074575
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.074042
                        }
                      ],
                      "others_margin": -0.275882
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.0748579204082489,
                    "model_output": 0.0749,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1385
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0632
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0254
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0139
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0124
                        }
                      ],
                      "others": -0.0235,
                      "total": 0.0749,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.557786
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.416793
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.232479
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.133698
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.118817
                        }
                      ],
                      "others_margin": -0.272948
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.27516674995422363,
                    "model_output": 0.2752,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3297
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2799
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0357
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0328
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.025
                        }
                      ],
                      "others": -0.0122,
                      "total": 0.2752,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.32968
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.279872
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.035686
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.0328
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.024997
                        }
                      ],
                      "others_margin": -0.012263
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.717966079711914,
                    "model_output": 6.718,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0893
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.025
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0187
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0106
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.0009,
                      "total": 6.718,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.089344
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.02504
                        },
                        {
                          "name": "rating",
                          "margin": -0.01868
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.010643
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007612
                        }
                      ],
                      "others_margin": -0.000872
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 36,
                  "role_matches": 15,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0041, quality 0.618)",
              "stats": {
                "key_pass": 0.4656,
                "expected_assists": 0.0385,
                "assists": 0.0412,
                "assist_rate": 0.0412,
                "expected_goals": 0.0192,
                "goals": 0.024,
                "goal_rate": 0.024,
                "shots_on_target": 0.0752,
                "total_shots": 0.2763,
                "rating": 6.718,
                "minutes": 17.82,
                "total_pass": 13.6902,
                "accurate_pass": 11.5397,
                "duels_won": 1.2666,
                "total_long_balls": 1.0414,
                "accurate_long_balls": 0.3745,
                "total_own_half_passes": 4.5076,
                "accurate_own_half_passes": 3.7252,
                "total_opp_half_passes": 9.1826,
                "accurate_opp_half_passes": 7.8146,
                "crosses_total": 1.1305,
                "crosses_accurate": 0.1885,
                "touches": 20.381,
                "possession_lost": 4.2746,
                "dispossessed": 0.1476,
                "duels_lost": 1.2533,
                "aerial_won": 0.1248,
                "aerial_lost": 0.2232,
                "interceptions": 0.017,
                "tackles_won": 0.588,
                "tackles": 0.882,
                "clearances": 0.3496,
                "total_contest": 0.2039,
                "won_contest": 0.1031,
                "challenges_lost": 0.4503,
                "fouls": 0.3314,
                "fouls_drawn": 0.1566,
                "blocks": 0.0885,
                "big_chances_created": 0.1391,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.6127,
                "total_progression": 15.6439,
                "progressive_carries": 0.3613,
                "shots_off_target": 0.2011
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.0041,
                "reference_quality": 0.505,
                "history_matches": 36,
                "history_shrink": 0.122,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0011)",
              "stats": {
                "key_pass": 0.4656,
                "expected_assists": 0.0385,
                "assists": 0.0412,
                "assist_rate": 0.0412,
                "expected_goals": 0.0192,
                "goals": 0.024,
                "goal_rate": 0.024,
                "shots_on_target": 0.0751,
                "total_shots": 0.276,
                "rating": 6.718,
                "minutes": 17.82,
                "total_pass": 13.6902,
                "accurate_pass": 11.5397,
                "duels_won": 1.2666,
                "total_long_balls": 1.0414,
                "accurate_long_balls": 0.3745,
                "total_own_half_passes": 4.5076,
                "accurate_own_half_passes": 3.7252,
                "total_opp_half_passes": 9.1826,
                "accurate_opp_half_passes": 7.8146,
                "crosses_total": 1.1293,
                "crosses_accurate": 0.1885,
                "touches": 20.381,
                "possession_lost": 4.2746,
                "dispossessed": 0.1476,
                "duels_lost": 1.2533,
                "aerial_won": 0.1248,
                "aerial_lost": 0.2232,
                "interceptions": 0.017,
                "tackles_won": 0.5884,
                "tackles": 0.882,
                "clearances": 0.3496,
                "total_contest": 0.2039,
                "won_contest": 0.1031,
                "challenges_lost": 0.4503,
                "fouls": 0.3311,
                "fouls_drawn": 0.1564,
                "blocks": 0.0885,
                "big_chances_created": 0.1391,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.6127,
                "total_progression": 15.6439,
                "progressive_carries": 0.3613,
                "shots_off_target": 0.2011
              },
              "params": {
                "blend_weight": 0.0011,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.198,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.8 to 19.0 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0411,
                "assists": 0.044,
                "assist_rate": 0.044,
                "expected_goals": 0.0205,
                "goals": 0.0256,
                "goal_rate": 0.0256,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01
              },
              "params": {
                "expected_minutes": 19.01,
                "projection_minutes": 17.82,
                "minutes_scale": 1.0668,
                "appearance_probability": 0.707
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0411,
                "assists": 0.044,
                "assist_rate": 0.044,
                "expected_goals": 0.0205,
                "goals": 0.0256,
                "goal_rate": 0.0256,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0411,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0205,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.707
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 82.0)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 896,
                "fifa_rank": 420.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0169,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0169,
                "goal_rate": 0.0256,
                "scorer_weight": 0.0183,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0111,
                "finishing_factor": 1.0723,
                "appearance_weight": 0.707,
                "weight_rank": 14,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0169,
                "projected_assists": 0,
                "assist_probability": 0.0377,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0377,
                "assist_rate": 0.044,
                "provider_weight": 0.0399,
                "squad_weight_total": 0.917,
                "weight_share": 0.0435,
                "creation_factor": 1.0318,
                "appearance_weight": 0.707,
                "weight_rank": 8,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jørgen Strand Larsen": {
          "player_id": 876599,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 193,
          "market_value": 41000000,
          "stats": {
            "expected_goals": 0.0724,
            "goal_rate": 0.1371,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.013,
            "key_pass": 0,
            "rating": 6.648,
            "minutes": 27,
            "total_pass": 5,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 4.3127,
            "dispossessed": 0.507,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0527,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0098,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 9,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.555,
            "bench_expected_minutes": 27.4,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0679,
            "projected_assists": 0,
            "assist_probability": 0.0128,
            "finishing_factor": 1.1672,
            "creation_factor": 1.25,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 61,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 83,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.977,
                "expected_assists": 0.3296,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0367,
                "expected_assists": 0.1719,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 84,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0884,
                "expected_assists": 0.0242,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 5,
                "clearances": 1,
                "aerial_won": 5,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 63,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0471,
                "expected_assists": 0.0009,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 27,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2511,
                "expected_assists": 0.0057,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 77,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0698,
                "expected_assists": 0.0137,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 14,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 61,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2023,
                "expected_assists": 0.1627,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 11,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1984,
                "expected_assists": 0.0121,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2851,
            "combined_rank_score": 964.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1418.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.648,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jørgen Strand Larsen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sergio Canales",
                  "ranking": 2846
                },
                {
                  "player_name": "Josip Šutalo",
                  "ranking": 2847
                },
                {
                  "player_name": "Orlando Mosquera",
                  "ranking": 2848
                },
                {
                  "player_name": "Kristian Dimitrov",
                  "ranking": 2849
                },
                {
                  "player_name": "Manor Solomon",
                  "ranking": 2850
                }
              ],
              "lower": [
                {
                  "player_name": "Ulugbek Khoshimov",
                  "ranking": 2852
                },
                {
                  "player_name": "Kian Ronan",
                  "ranking": 2853
                },
                {
                  "player_name": "Carlos Richards",
                  "ranking": 2854
                },
                {
                  "player_name": "Cheick Doucouré",
                  "ranking": 2855
                },
                {
                  "player_name": "Pep Chavarría",
                  "ranking": 2856
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 27.4,
            "bench_appearance_prob": 0.555,
            "market_value_adjustment": 1.0092,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 28.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost F_service (41 historical appearances) to 27.4 expected mins (appearance prob 0.56); FBref playing time empirical prior: 1.0 sub appearances, 28.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1167,
                "goals": 0.1458,
                "goal_rate": 0.1458,
                "shots_on_target": 0.3702,
                "total_shots": 0.8376,
                "expected_assists": 0.0185,
                "key_pass": 0.266,
                "rating": 6.648,
                "minutes": 29.25,
                "total_pass": 5.5325,
                "accurate_pass": 3.4064,
                "duels_won": 1.6879,
                "total_long_balls": 0.2653,
                "accurate_long_balls": 0.1264,
                "total_opp_half_passes": 4.1439,
                "accurate_opp_half_passes": 2.1734,
                "crosses_total": 0.0344,
                "crosses_accurate": 0.0,
                "touches": 10.5643,
                "possession_lost": 4.5619,
                "dispossessed": 0.5024,
                "duels_lost": 2.5059,
                "aerial_lost": 1.2355,
                "total_contest": 0.3012,
                "won_contest": 0.1749,
                "ball_recovery": 0.9648,
                "challenges_lost": 0.1263,
                "fouls": 0.6639,
                "fouls_drawn": 0.1556,
                "assists": 0.0561,
                "assist_rate": 0.0561,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.1337,
                "clearances": 0.2154,
                "blocks": 0.0,
                "big_chances_created": 0.06,
                "big_chances_missed": 0.2552,
                "xgot": 0.0159,
                "offsides": 0.2149,
                "ball_carries": 1.9157,
                "total_progression": 9.6551,
                "progressive_carries": 0.5078,
                "shots_off_target": 0.4674
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1067,
                  "totalOppositionHalfPasses": 8.8269,
                  "accurateOppositionHalfPasses": 5.9689,
                  "accuratePass": 8.8404,
                  "totalShots": 1.3532
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11668967455625534,
                    "model_output": 0.1167,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0869
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0121
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0061
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0044
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0032
                        }
                      ],
                      "others": 0.003,
                      "total": 0.1167,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.574515
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.11468
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.058848
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.04032
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.028318
                        }
                      ],
                      "others_margin": 0.02815
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14579246938228607,
                    "model_output": 0.1458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0811
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0201
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0125
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0089
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0043
                        }
                      ],
                      "others": 0.0176,
                      "total": 0.1458,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.50719
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.179036
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.115162
                        },
                        {
                          "name": "goals",
                          "margin": 0.074287
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.033893
                        }
                      ],
                      "others_margin": 0.128179
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.37018856406211853,
                    "model_output": 0.3702,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2009
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0147
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0146
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0122
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0115
                        }
                      ],
                      "others": 0.0105,
                      "total": 0.3702,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.468663
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.044668
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.04444
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.035804
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.032414
                        }
                      ],
                      "others_margin": 0.028724
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8376331925392151,
                    "model_output": 0.8376,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5516
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0562
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0505
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0374
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.0235
                        }
                      ],
                      "others": 0.0023,
                      "total": 0.8376,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551621
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.056228
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.050474
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.037408
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.023528
                        }
                      ],
                      "others_margin": 0.002423
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.018516460433602333,
                    "model_output": 0.0185,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0218
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0044
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0028
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0025
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0122,
                      "total": 0.0185,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.413096
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.11031
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.075683
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.07336
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.066955
                        }
                      ],
                      "others_margin": -0.505236
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.26599493622779846,
                    "model_output": 0.266,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.267
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0309
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0258
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0203
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0145
                        }
                      ],
                      "others": -0.0495,
                      "total": 0.266,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504413
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.079041
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.070962
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.059555
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.045016
                        }
                      ],
                      "others_margin": -0.170732
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.648012638092041,
                    "model_output": 6.648,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0496
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0124
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0107
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0415,
                      "total": 6.648,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.049594
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.012381
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011503
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.010676
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.009856
                        }
                      ],
                      "others_margin": -0.041492
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 41,
                  "role_matches": 12,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0092, quality 0.786)",
              "stats": {
                "expected_goals": 0.1178,
                "goals": 0.1471,
                "goal_rate": 0.1471,
                "shots_on_target": 0.3736,
                "total_shots": 0.8453,
                "expected_assists": 0.0187,
                "key_pass": 0.2684,
                "rating": 6.648,
                "minutes": 29.25,
                "total_pass": 5.5834,
                "accurate_pass": 3.4377,
                "duels_won": 1.7034,
                "total_long_balls": 0.2677,
                "accurate_long_balls": 0.1276,
                "total_opp_half_passes": 4.182,
                "accurate_opp_half_passes": 2.1934,
                "crosses_total": 0.0347,
                "crosses_accurate": 0.0,
                "touches": 10.6615,
                "possession_lost": 4.6039,
                "dispossessed": 0.507,
                "duels_lost": 2.529,
                "aerial_lost": 1.2469,
                "total_contest": 0.304,
                "won_contest": 0.1765,
                "ball_recovery": 0.9737,
                "challenges_lost": 0.1275,
                "fouls": 0.67,
                "fouls_drawn": 0.157,
                "assists": 0.0566,
                "assist_rate": 0.0566,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.1349,
                "clearances": 0.2174,
                "blocks": 0.0,
                "big_chances_created": 0.0606,
                "big_chances_missed": 0.2575,
                "xgot": 0.016,
                "offsides": 0.2169,
                "ball_carries": 1.9333,
                "total_progression": 9.7439,
                "progressive_carries": 0.5125,
                "shots_off_target": 0.4717
              },
              "params": {
                "market_value_eur": 41000000,
                "quality_factor": 0.7859,
                "boost_factor": 1.0092,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0047)",
              "stats": {
                "expected_goals": 0.1178,
                "goals": 0.1464,
                "goal_rate": 0.1464,
                "shots_on_target": 0.3734,
                "total_shots": 0.8444,
                "expected_assists": 0.0187,
                "key_pass": 0.2684,
                "rating": 6.648,
                "minutes": 29.25,
                "total_pass": 5.5834,
                "accurate_pass": 3.4377,
                "duels_won": 1.7034,
                "total_long_balls": 0.2677,
                "accurate_long_balls": 0.1276,
                "total_opp_half_passes": 4.182,
                "accurate_opp_half_passes": 2.1934,
                "crosses_total": 0.0345,
                "crosses_accurate": 0.0,
                "touches": 10.6615,
                "possession_lost": 4.6039,
                "dispossessed": 0.507,
                "duels_lost": 2.529,
                "aerial_lost": 1.2469,
                "total_contest": 0.304,
                "won_contest": 0.1765,
                "ball_recovery": 0.9737,
                "challenges_lost": 0.1275,
                "fouls": 0.6714,
                "fouls_drawn": 0.1578,
                "assists": 0.0563,
                "assist_rate": 0.0563,
                "interceptions": 0.0,
                "tackles_won": 0.0015,
                "tackles": 0.1349,
                "clearances": 0.2174,
                "blocks": 0.0,
                "big_chances_created": 0.0606,
                "big_chances_missed": 0.2575,
                "xgot": 0.016,
                "offsides": 0.2159,
                "ball_carries": 1.9333,
                "total_progression": 9.7439,
                "progressive_carries": 0.5125,
                "shots_off_target": 0.4717
              },
              "params": {
                "blend_weight": 0.0047,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.325,
                "prior_reliability": 0.0667,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 29.2 to 27.4 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.1103,
                "goals": 0.1371,
                "goal_rate": 0.1371,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.0175,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assists": 0.0527,
                "assist_rate": 0.0527,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.015,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4
              },
              "params": {
                "expected_minutes": 27.4,
                "projection_minutes": 29.25,
                "minutes_scale": 0.9368,
                "appearance_probability": 0.555
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1103,
                "goals": 0.1371,
                "goal_rate": 0.1371,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.0175,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assists": 0.0527,
                "assist_rate": 0.0527,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.015,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1103,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.0175,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.015,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.555
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1103,
                  "after": 0.0724
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2851,
                "fifa_rank": 1418.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0679,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0679,
                "goal_rate": 0.1371,
                "scorer_weight": 0.0845,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0512,
                "finishing_factor": 1.1672,
                "appearance_weight": 0.555,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0679,
                "projected_assists": 0,
                "assist_probability": 0.0128,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0128,
                "assist_rate": 0.0527,
                "provider_weight": 0.0163,
                "squad_weight_total": 0.917,
                "weight_share": 0.0177,
                "creation_factor": 1.25,
                "appearance_weight": 0.555,
                "weight_rank": 13,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Evann Guessand": {
          "player_id": 930245,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 185,
          "market_value": 24000000,
          "stats": {
            "expected_goals": 0.0492,
            "goal_rate": 0.0636,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0318,
            "key_pass": 0,
            "rating": 6.6072,
            "minutes": 27,
            "total_pass": 6,
            "accurate_pass": 6,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 3.5448,
            "dispossessed": 0.8005,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0679,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.063,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 15,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.738,
            "bench_expected_minutes": 27.19,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0476,
            "projected_assists": 0,
            "assist_probability": 0.0311,
            "finishing_factor": 1.0677,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 27,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0076,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 27,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0316,
                "expected_assists": 0.0172,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 12,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 7,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 9,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.096,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023991,
              "match_date": "2026-03-15",
              "home_team": "Crystal Palace",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0428,
                "expected_assists": 0.0187,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023981,
              "match_date": "2026-03-05",
              "home_team": "Tottenham Hotspur",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 67,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0418,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023978,
              "match_date": "2026-03-01",
              "home_team": "Manchester United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 32,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 2,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024008,
              "match_date": "2026-02-22",
              "home_team": "Crystal Palace",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 18,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2469,
                "expected_assists": 0.1781,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 8,
                "accurate_pass": 7,
                "interceptions": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025209,
              "match_date": "2026-02-11",
              "home_team": "Crystal Palace",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Burnley",
              "stats": {
                "minutes": 58,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0803,
                "expected_assists": 0.0244,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 19,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025161,
              "match_date": "2026-02-08",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 34,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0426,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2981,
            "combined_rank_score": 992.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 868.0,
            "sofascore_rating": 6.5571,
            "sofascore_appearances": 21.0,
            "fifa_rank": 1116.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6072,
            "source_file": "data/player_rankings.csv",
            "player_name": "Evann Guessand",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kye Livingstone",
                  "ranking": 2976
                },
                {
                  "player_name": "Kristijan Trapanovski",
                  "ranking": 2977
                },
                {
                  "player_name": "Ruslan Lisakovich",
                  "ranking": 2978
                },
                {
                  "player_name": "Brando Bailey-Joseph",
                  "ranking": 2979
                },
                {
                  "player_name": "Dirk Carlson",
                  "ranking": 2980
                }
              ],
              "lower": [
                {
                  "player_name": "Melvin Bard",
                  "ranking": 2982
                },
                {
                  "player_name": "Tyrone Mings",
                  "ranking": 2983
                },
                {
                  "player_name": "Salim Mustafoev",
                  "ranking": 2984
                },
                {
                  "player_name": "Julian Del Rio",
                  "ranking": 2985
                },
                {
                  "player_name": "Takehiro Tomiyasu",
                  "ranking": 2986
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.756,
          "history_matches": 23,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 23,
            "data_confidence": 0.756,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 27.19,
            "bench_appearance_prob": 0.738,
            "market_value_adjustment": 1.0088,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 28.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.04
            },
            "rationale": "Bench projection scaled from XGBoost F_service (23 historical appearances) to 27.2 expected mins (appearance prob 0.74); FBref playing time empirical prior: 2.0 sub appearances, 28.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0521,
                "goals": 0.0591,
                "goal_rate": 0.0591,
                "shots_on_target": 0.2164,
                "total_shots": 0.546,
                "expected_assists": 0.0298,
                "key_pass": 0.2822,
                "rating": 6.6072,
                "minutes": 25.37,
                "total_pass": 5.9778,
                "accurate_pass": 5.4057,
                "duels_won": 2.0006,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4378,
                "accurate_opp_half_passes": 4.003,
                "crosses_total": 0.2623,
                "crosses_accurate": 0.0,
                "touches": 12.6291,
                "possession_lost": 3.2786,
                "dispossessed": 0.7935,
                "duels_lost": 2.6411,
                "aerial_lost": 0.5465,
                "total_contest": 0.8869,
                "won_contest": 0.2951,
                "ball_recovery": 0.885,
                "challenges_lost": 0.2488,
                "fouls": 0.4606,
                "fouls_drawn": 0.536,
                "assists": 0.0631,
                "assist_rate": 0.0631,
                "interceptions": 0.215,
                "tackles_won": 0.2801,
                "tackles": 0.7871,
                "clearances": 0.3234,
                "blocks": 0.1072,
                "big_chances_created": 0.0666,
                "big_chances_missed": 0.0,
                "xgot": 0.0667,
                "offsides": 0.1208,
                "ball_carries": 3.5664,
                "total_progression": 14.3263,
                "progressive_carries": 0.668,
                "shots_off_target": 0.3296
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1537,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1306,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.111,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0944,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0802,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0682,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Manchester United",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.058,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Wolverhampton",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0493,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-02-11",
                    "opponent": "Burnley",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0419,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-02-08",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0356,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0457,
                  "totalOppositionHalfPasses": 6.2799,
                  "accurateOppositionHalfPasses": 5.216,
                  "accuratePass": 7.7135,
                  "totalShots": 0.4643
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.052122946828603745,
                    "model_output": 0.0521,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0191
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0069
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0049
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0179,
                      "total": 0.0521,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63704
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.200589
                        },
                        {
                          "name": "goals",
                          "margin": -0.083261
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.063537
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.060834
                        }
                      ],
                      "others_margin": -0.29421
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05908265709877014,
                    "model_output": 0.0591,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0892
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.021
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0089
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0076
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0058
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.0591,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.576304
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.202881
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.099751
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.093671
                        },
                        {
                          "name": "goals",
                          "margin": -0.078283
                        }
                      ],
                      "others_margin": -0.187064
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.216374009847641,
                    "model_output": 0.2164,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2037
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0273
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0245
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0206
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0318,
                      "total": 0.2164,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.477016
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085494
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.083447
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.076085
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.050028
                        }
                      ],
                      "others_margin": -0.136881
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5459861755371094,
                    "model_output": 0.546,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4702
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1245
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0586
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0422
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0265
                        }
                      ],
                      "others": -0.1107,
                      "total": 0.546,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.470229
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.124527
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.058618
                        },
                        {
                          "name": "goals",
                          "margin": -0.04223
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.026472
                        }
                      ],
                      "others_margin": -0.110644
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02979467436671257,
                    "model_output": 0.0298,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0186
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0037
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0028
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0028
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0102,
                      "total": 0.0298,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.341404
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.085509
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.064129
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.064084
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.049725
                        }
                      ],
                      "others_margin": -0.29238
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.28221189975738525,
                    "model_output": 0.2822,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2792
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0261
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0215
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0186
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0114
                        }
                      ],
                      "others": -0.035,
                      "total": 0.2822,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.534993
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.068355
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.060129
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.05516
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.035264
                        }
                      ],
                      "others_margin": -0.116636
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.607211112976074,
                    "model_output": 6.6072,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0506
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0188
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0128
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0128
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0114
                        }
                      ],
                      "others": -0.0486,
                      "total": 6.6072,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.050591
                        },
                        {
                          "name": "rating",
                          "margin": -0.018786
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012809
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.012782
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.011401
                        }
                      ],
                      "others_margin": -0.048581
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 23,
                  "role_matches": 14,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0088, quality 0.669)",
              "stats": {
                "expected_goals": 0.0526,
                "goals": 0.0596,
                "goal_rate": 0.0596,
                "shots_on_target": 0.2183,
                "total_shots": 0.5508,
                "expected_assists": 0.0301,
                "key_pass": 0.2847,
                "rating": 6.6072,
                "minutes": 25.37,
                "total_pass": 6.0304,
                "accurate_pass": 5.4533,
                "duels_won": 2.0182,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4769,
                "accurate_opp_half_passes": 4.0382,
                "crosses_total": 0.2646,
                "crosses_accurate": 0.0,
                "touches": 12.7402,
                "possession_lost": 3.3075,
                "dispossessed": 0.8005,
                "duels_lost": 2.6643,
                "aerial_lost": 0.5513,
                "total_contest": 0.8947,
                "won_contest": 0.2977,
                "ball_recovery": 0.8928,
                "challenges_lost": 0.251,
                "fouls": 0.4647,
                "fouls_drawn": 0.5407,
                "assists": 0.0637,
                "assist_rate": 0.0637,
                "interceptions": 0.2169,
                "tackles_won": 0.2826,
                "tackles": 0.794,
                "clearances": 0.3262,
                "blocks": 0.1081,
                "big_chances_created": 0.0672,
                "big_chances_missed": 0.0,
                "xgot": 0.0673,
                "offsides": 0.1219,
                "ball_carries": 3.5978,
                "total_progression": 14.4524,
                "progressive_carries": 0.6739,
                "shots_off_target": 0.3325
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0088,
                "reference_quality": 0.505,
                "history_matches": 23,
                "history_shrink": 0.1786,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0046)",
              "stats": {
                "expected_goals": 0.0526,
                "goals": 0.0593,
                "goal_rate": 0.0593,
                "shots_on_target": 0.2194,
                "total_shots": 0.5503,
                "expected_assists": 0.0301,
                "key_pass": 0.2847,
                "rating": 6.6072,
                "minutes": 25.37,
                "total_pass": 6.0304,
                "accurate_pass": 5.4533,
                "duels_won": 2.0182,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4769,
                "accurate_opp_half_passes": 4.0382,
                "crosses_total": 0.2656,
                "crosses_accurate": 0.0,
                "touches": 12.7402,
                "possession_lost": 3.3075,
                "dispossessed": 0.8005,
                "duels_lost": 2.6643,
                "aerial_lost": 0.5513,
                "total_contest": 0.8947,
                "won_contest": 0.2977,
                "ball_recovery": 0.8928,
                "challenges_lost": 0.251,
                "fouls": 0.4669,
                "fouls_drawn": 0.5382,
                "assists": 0.0634,
                "assist_rate": 0.0634,
                "interceptions": 0.2159,
                "tackles_won": 0.2813,
                "tackles": 0.794,
                "clearances": 0.3262,
                "blocks": 0.1081,
                "big_chances_created": 0.0672,
                "big_chances_missed": 0.0,
                "xgot": 0.0673,
                "offsides": 0.1213,
                "ball_carries": 3.5978,
                "total_progression": 14.4524,
                "progressive_carries": 0.6739,
                "shots_off_target": 0.3325
              },
              "params": {
                "blend_weight": 0.0046,
                "history_matches": 23,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2819,
                "prior_reliability": 0.04,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 25.4 to 27.2 expected minutes (appearance prob 0.74)",
              "stats": {
                "expected_goals": 0.0564,
                "goals": 0.0636,
                "goal_rate": 0.0636,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0323,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assists": 0.0679,
                "assist_rate": 0.0679,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.0721,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19
              },
              "params": {
                "expected_minutes": 27.19,
                "projection_minutes": 25.37,
                "minutes_scale": 1.0717,
                "appearance_probability": 0.738
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0564,
                "goals": 0.0636,
                "goal_rate": 0.0636,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0323,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assists": 0.0679,
                "assist_rate": 0.0679,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.0721,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0323,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.0721,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.738
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0564,
                  "after": 0.0492
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2981,
                "fifa_rank": 1116.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0476,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0476,
                "goal_rate": 0.0636,
                "scorer_weight": 0.0525,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0318,
                "finishing_factor": 1.0677,
                "appearance_weight": 0.738,
                "weight_rank": 10,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0476,
                "projected_assists": 0,
                "assist_probability": 0.0311,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0311,
                "assist_rate": 0.0679,
                "provider_weight": 0.0398,
                "squad_weight_total": 0.917,
                "weight_share": 0.0433,
                "creation_factor": 1.25,
                "appearance_weight": 0.738,
                "weight_rank": 9,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Evann Guessand": {
          "player_id": 930245,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 185,
          "market_value": 24000000,
          "stats": {
            "expected_goals": 0.0492,
            "goal_rate": 0.0636,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0318,
            "key_pass": 0,
            "rating": 6.6072,
            "minutes": 27,
            "total_pass": 6,
            "accurate_pass": 6,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 3.5448,
            "dispossessed": 0.8005,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0679,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.063,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 15,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.738,
            "bench_expected_minutes": 27.19,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0476,
            "projected_assists": 0,
            "assist_probability": 0.0311,
            "finishing_factor": 1.0677,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 27,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0076,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 27,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0316,
                "expected_assists": 0.0172,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 12,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 7,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 9,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.096,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023991,
              "match_date": "2026-03-15",
              "home_team": "Crystal Palace",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0428,
                "expected_assists": 0.0187,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023981,
              "match_date": "2026-03-05",
              "home_team": "Tottenham Hotspur",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 67,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0418,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023978,
              "match_date": "2026-03-01",
              "home_team": "Manchester United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 32,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 2,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024008,
              "match_date": "2026-02-22",
              "home_team": "Crystal Palace",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 18,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2469,
                "expected_assists": 0.1781,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 8,
                "accurate_pass": 7,
                "interceptions": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025209,
              "match_date": "2026-02-11",
              "home_team": "Crystal Palace",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Burnley",
              "stats": {
                "minutes": 58,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0803,
                "expected_assists": 0.0244,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 19,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025161,
              "match_date": "2026-02-08",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 34,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0426,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2981,
            "combined_rank_score": 992.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 868.0,
            "sofascore_rating": 6.5571,
            "sofascore_appearances": 21.0,
            "fifa_rank": 1116.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6072,
            "source_file": "data/player_rankings.csv",
            "player_name": "Evann Guessand",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kye Livingstone",
                  "ranking": 2976
                },
                {
                  "player_name": "Kristijan Trapanovski",
                  "ranking": 2977
                },
                {
                  "player_name": "Ruslan Lisakovich",
                  "ranking": 2978
                },
                {
                  "player_name": "Brando Bailey-Joseph",
                  "ranking": 2979
                },
                {
                  "player_name": "Dirk Carlson",
                  "ranking": 2980
                }
              ],
              "lower": [
                {
                  "player_name": "Melvin Bard",
                  "ranking": 2982
                },
                {
                  "player_name": "Tyrone Mings",
                  "ranking": 2983
                },
                {
                  "player_name": "Salim Mustafoev",
                  "ranking": 2984
                },
                {
                  "player_name": "Julian Del Rio",
                  "ranking": 2985
                },
                {
                  "player_name": "Takehiro Tomiyasu",
                  "ranking": 2986
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.756,
          "history_matches": 23,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 23,
            "data_confidence": 0.756,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 27.19,
            "bench_appearance_prob": 0.738,
            "market_value_adjustment": 1.0088,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 28.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.04
            },
            "rationale": "Bench projection scaled from XGBoost F_service (23 historical appearances) to 27.2 expected mins (appearance prob 0.74); FBref playing time empirical prior: 2.0 sub appearances, 28.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0521,
                "goals": 0.0591,
                "goal_rate": 0.0591,
                "shots_on_target": 0.2164,
                "total_shots": 0.546,
                "expected_assists": 0.0298,
                "key_pass": 0.2822,
                "rating": 6.6072,
                "minutes": 25.37,
                "total_pass": 5.9778,
                "accurate_pass": 5.4057,
                "duels_won": 2.0006,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4378,
                "accurate_opp_half_passes": 4.003,
                "crosses_total": 0.2623,
                "crosses_accurate": 0.0,
                "touches": 12.6291,
                "possession_lost": 3.2786,
                "dispossessed": 0.7935,
                "duels_lost": 2.6411,
                "aerial_lost": 0.5465,
                "total_contest": 0.8869,
                "won_contest": 0.2951,
                "ball_recovery": 0.885,
                "challenges_lost": 0.2488,
                "fouls": 0.4606,
                "fouls_drawn": 0.536,
                "assists": 0.0631,
                "assist_rate": 0.0631,
                "interceptions": 0.215,
                "tackles_won": 0.2801,
                "tackles": 0.7871,
                "clearances": 0.3234,
                "blocks": 0.1072,
                "big_chances_created": 0.0666,
                "big_chances_missed": 0.0,
                "xgot": 0.0667,
                "offsides": 0.1208,
                "ball_carries": 3.5664,
                "total_progression": 14.3263,
                "progressive_carries": 0.668,
                "shots_off_target": 0.3296
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1537,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1306,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.111,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0944,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0802,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0682,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Manchester United",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.058,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Wolverhampton",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0493,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-02-11",
                    "opponent": "Burnley",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0419,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-02-08",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0356,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0457,
                  "totalOppositionHalfPasses": 6.2799,
                  "accurateOppositionHalfPasses": 5.216,
                  "accuratePass": 7.7135,
                  "totalShots": 0.4643
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.052122946828603745,
                    "model_output": 0.0521,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0191
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0069
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0049
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0179,
                      "total": 0.0521,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63704
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.200589
                        },
                        {
                          "name": "goals",
                          "margin": -0.083261
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.063537
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.060834
                        }
                      ],
                      "others_margin": -0.29421
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05908265709877014,
                    "model_output": 0.0591,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0892
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.021
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0089
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0076
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0058
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.0591,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.576304
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.202881
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.099751
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.093671
                        },
                        {
                          "name": "goals",
                          "margin": -0.078283
                        }
                      ],
                      "others_margin": -0.187064
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.216374009847641,
                    "model_output": 0.2164,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2037
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0273
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0245
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0206
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0318,
                      "total": 0.2164,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.477016
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085494
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.083447
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.076085
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.050028
                        }
                      ],
                      "others_margin": -0.136881
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5459861755371094,
                    "model_output": 0.546,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4702
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1245
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0586
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0422
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0265
                        }
                      ],
                      "others": -0.1107,
                      "total": 0.546,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.470229
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.124527
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.058618
                        },
                        {
                          "name": "goals",
                          "margin": -0.04223
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.026472
                        }
                      ],
                      "others_margin": -0.110644
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02979467436671257,
                    "model_output": 0.0298,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0186
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0037
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0028
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0028
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0102,
                      "total": 0.0298,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.341404
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.085509
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.064129
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.064084
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.049725
                        }
                      ],
                      "others_margin": -0.29238
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.28221189975738525,
                    "model_output": 0.2822,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2792
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0261
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0215
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0186
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0114
                        }
                      ],
                      "others": -0.035,
                      "total": 0.2822,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.534993
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.068355
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.060129
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.05516
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.035264
                        }
                      ],
                      "others_margin": -0.116636
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.607211112976074,
                    "model_output": 6.6072,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0506
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0188
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0128
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0128
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0114
                        }
                      ],
                      "others": -0.0486,
                      "total": 6.6072,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.050591
                        },
                        {
                          "name": "rating",
                          "margin": -0.018786
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012809
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.012782
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.011401
                        }
                      ],
                      "others_margin": -0.048581
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 23,
                  "role_matches": 14,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0088, quality 0.669)",
              "stats": {
                "expected_goals": 0.0526,
                "goals": 0.0596,
                "goal_rate": 0.0596,
                "shots_on_target": 0.2183,
                "total_shots": 0.5508,
                "expected_assists": 0.0301,
                "key_pass": 0.2847,
                "rating": 6.6072,
                "minutes": 25.37,
                "total_pass": 6.0304,
                "accurate_pass": 5.4533,
                "duels_won": 2.0182,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4769,
                "accurate_opp_half_passes": 4.0382,
                "crosses_total": 0.2646,
                "crosses_accurate": 0.0,
                "touches": 12.7402,
                "possession_lost": 3.3075,
                "dispossessed": 0.8005,
                "duels_lost": 2.6643,
                "aerial_lost": 0.5513,
                "total_contest": 0.8947,
                "won_contest": 0.2977,
                "ball_recovery": 0.8928,
                "challenges_lost": 0.251,
                "fouls": 0.4647,
                "fouls_drawn": 0.5407,
                "assists": 0.0637,
                "assist_rate": 0.0637,
                "interceptions": 0.2169,
                "tackles_won": 0.2826,
                "tackles": 0.794,
                "clearances": 0.3262,
                "blocks": 0.1081,
                "big_chances_created": 0.0672,
                "big_chances_missed": 0.0,
                "xgot": 0.0673,
                "offsides": 0.1219,
                "ball_carries": 3.5978,
                "total_progression": 14.4524,
                "progressive_carries": 0.6739,
                "shots_off_target": 0.3325
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0088,
                "reference_quality": 0.505,
                "history_matches": 23,
                "history_shrink": 0.1786,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0046)",
              "stats": {
                "expected_goals": 0.0526,
                "goals": 0.0593,
                "goal_rate": 0.0593,
                "shots_on_target": 0.2194,
                "total_shots": 0.5503,
                "expected_assists": 0.0301,
                "key_pass": 0.2847,
                "rating": 6.6072,
                "minutes": 25.37,
                "total_pass": 6.0304,
                "accurate_pass": 5.4533,
                "duels_won": 2.0182,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4769,
                "accurate_opp_half_passes": 4.0382,
                "crosses_total": 0.2656,
                "crosses_accurate": 0.0,
                "touches": 12.7402,
                "possession_lost": 3.3075,
                "dispossessed": 0.8005,
                "duels_lost": 2.6643,
                "aerial_lost": 0.5513,
                "total_contest": 0.8947,
                "won_contest": 0.2977,
                "ball_recovery": 0.8928,
                "challenges_lost": 0.251,
                "fouls": 0.4669,
                "fouls_drawn": 0.5382,
                "assists": 0.0634,
                "assist_rate": 0.0634,
                "interceptions": 0.2159,
                "tackles_won": 0.2813,
                "tackles": 0.794,
                "clearances": 0.3262,
                "blocks": 0.1081,
                "big_chances_created": 0.0672,
                "big_chances_missed": 0.0,
                "xgot": 0.0673,
                "offsides": 0.1213,
                "ball_carries": 3.5978,
                "total_progression": 14.4524,
                "progressive_carries": 0.6739,
                "shots_off_target": 0.3325
              },
              "params": {
                "blend_weight": 0.0046,
                "history_matches": 23,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2819,
                "prior_reliability": 0.04,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 25.4 to 27.2 expected minutes (appearance prob 0.74)",
              "stats": {
                "expected_goals": 0.0564,
                "goals": 0.0636,
                "goal_rate": 0.0636,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0323,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assists": 0.0679,
                "assist_rate": 0.0679,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.0721,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19
              },
              "params": {
                "expected_minutes": 27.19,
                "projection_minutes": 25.37,
                "minutes_scale": 1.0717,
                "appearance_probability": 0.738
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0564,
                "goals": 0.0636,
                "goal_rate": 0.0636,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0323,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assists": 0.0679,
                "assist_rate": 0.0679,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.0721,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0323,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.0721,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.738
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0564,
                  "after": 0.0492
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2981,
                "fifa_rank": 1116.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0476,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0476,
                "goal_rate": 0.0636,
                "scorer_weight": 0.0525,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0318,
                "finishing_factor": 1.0677,
                "appearance_weight": 0.738,
                "weight_rank": 10,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0492,
                "goal_rate": 0.0636,
                "goals": 0,
                "shots_on_target": 0.2351,
                "total_shots": 0.5915,
                "expected_assists": 0.0318,
                "key_pass": 0.3051,
                "rating": 6.6072,
                "minutes": 27.19,
                "total_pass": 6.463,
                "accurate_pass": 5.8445,
                "duels_won": 2.163,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.7981,
                "accurate_opp_half_passes": 4.3279,
                "crosses_total": 0.2847,
                "crosses_accurate": 0.0,
                "touches": 13.6542,
                "possession_lost": 3.5448,
                "dispossessed": 0.8005,
                "duels_lost": 2.8554,
                "aerial_lost": 0.5513,
                "total_contest": 0.9589,
                "won_contest": 0.3191,
                "ball_recovery": 0.9568,
                "challenges_lost": 0.251,
                "fouls": 0.5004,
                "fouls_drawn": 0.5768,
                "assist_rate": 0.0679,
                "assists": 0,
                "interceptions": 0.2314,
                "tackles_won": 0.3015,
                "tackles": 0.851,
                "clearances": 0.3496,
                "blocks": 0.1159,
                "big_chances_created": 0.072,
                "big_chances_missed": 0.0,
                "xgot": 0.063,
                "offsides": 0.1213,
                "ball_carries": 3.8559,
                "total_progression": 15.4892,
                "progressive_carries": 0.7222,
                "shots_off_target": 0.3564,
                "bench_appearance_probability": 0.738,
                "bench_expected_minutes": 27.19,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0476,
                "projected_assists": 0,
                "assist_probability": 0.0311,
                "finishing_factor": 1.0677,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0311,
                "assist_rate": 0.0679,
                "provider_weight": 0.0398,
                "squad_weight_total": 0.917,
                "weight_share": 0.0433,
                "creation_factor": 1.25,
                "appearance_weight": 0.738,
                "weight_rank": 9,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Óscar Mingueza": {
          "player_id": 859773,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 184,
          "market_value": 18700000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0387,
            "assist_rate": 0.044,
            "assists": 0,
            "expected_goals": 0.0171,
            "goal_rate": 0.0256,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.718,
            "minutes": 19,
            "total_pass": 15,
            "accurate_pass": 12,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 4.5601,
            "dispossessed": 0.1476,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 17,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.707,
            "bench_expected_minutes": 19.01,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0169,
            "projected_assists": 0,
            "assist_probability": 0.0377,
            "finishing_factor": 1.0723,
            "creation_factor": 1.0318,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 15,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083715,
              "match_date": "2026-05-23",
              "home_team": "Celta Vigo",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083656,
              "match_date": "2026-05-17",
              "home_team": "Athletic Club",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0188,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083613,
              "match_date": "2026-05-12",
              "home_team": "Celta Vigo",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 14,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3096,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 21,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083551,
              "match_date": "2026-05-09",
              "home_team": "Atlético Madrid",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 89,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.063,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 9,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083401,
              "match_date": "2026-05-03",
              "home_team": "Celta Vigo",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Elche",
              "stats": {
                "minutes": 12,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083248,
              "match_date": "2026-04-26",
              "home_team": "Villarreal",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Celta Vigo",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3524,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 61,
                "key_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083261,
              "match_date": "2026-04-22",
              "home_team": "FC Barcelona",
              "away_team": "Celta Vigo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0257,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 12,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083123,
              "match_date": "2026-04-12",
              "home_team": "Celta Vigo",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Celta Vigo",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 30,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2694,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 24,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 896,
            "combined_rank_score": 419.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 419.0,
            "sofascore_rating": 6.9242,
            "sofascore_appearances": 34.0,
            "fifa_rank": 420.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.718,
            "source_file": "data/player_rankings.csv",
            "player_name": "Óscar Mingueza",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alexis Saelemaekers",
                  "ranking": 891
                },
                {
                  "player_name": "Malick Thiaw",
                  "ranking": 892
                },
                {
                  "player_name": "Maxence Lacroix",
                  "ranking": 893
                },
                {
                  "player_name": "Matty Cash",
                  "ranking": 894
                },
                {
                  "player_name": "Stefan de Vrij",
                  "ranking": 895
                }
              ],
              "lower": [
                {
                  "player_name": "Moleiro",
                  "ranking": 897
                },
                {
                  "player_name": "Fabián Hormazábal",
                  "ranking": 898
                },
                {
                  "player_name": "Do-hyeok Kim",
                  "ranking": 899
                },
                {
                  "player_name": "Jorge de Frutos",
                  "ranking": 900
                },
                {
                  "player_name": "Bruno Silva",
                  "ranking": 901
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 19.01,
            "bench_appearance_prob": 0.707,
            "market_value_adjustment": 1.0041,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 16.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (36 historical appearances) to 19.0 expected mins (appearance prob 0.71); FBref playing time empirical prior: 1.0 sub appearances, 16.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4637,
                "expected_assists": 0.0383,
                "assists": 0.041,
                "assist_rate": 0.041,
                "expected_goals": 0.0191,
                "goals": 0.0239,
                "goal_rate": 0.0239,
                "shots_on_target": 0.0749,
                "total_shots": 0.2752,
                "rating": 6.718,
                "minutes": 17.82,
                "total_pass": 13.6343,
                "accurate_pass": 11.4926,
                "duels_won": 1.2614,
                "total_long_balls": 1.0371,
                "accurate_long_balls": 0.373,
                "total_own_half_passes": 4.4892,
                "accurate_own_half_passes": 3.71,
                "total_opp_half_passes": 9.1451,
                "accurate_opp_half_passes": 7.7827,
                "crosses_total": 1.1259,
                "crosses_accurate": 0.1877,
                "touches": 20.2978,
                "possession_lost": 4.2571,
                "dispossessed": 0.147,
                "duels_lost": 1.2482,
                "aerial_won": 0.1243,
                "aerial_lost": 0.2223,
                "interceptions": 0.0169,
                "tackles_won": 0.5856,
                "tackles": 0.8784,
                "clearances": 0.3482,
                "total_contest": 0.2031,
                "won_contest": 0.1027,
                "challenges_lost": 0.4485,
                "fouls": 0.33,
                "fouls_drawn": 0.156,
                "blocks": 0.0881,
                "big_chances_created": 0.1385,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 15.58,
                "progressive_carries": 0.3598,
                "shots_off_target": 0.2003
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1279,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Sevilla",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1087,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Athletic Club",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0924,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Levante UD",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0785,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Atlético Madrid",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Elche",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "FC Barcelona",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Real Oviedo",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.0647,
                  "creative_index": 0.2836,
                  "expectedGoals": 0.0016,
                  "expectedAssists": 0.0715,
                  "onTargetScoringAttempt": 0.0303
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.46372485160827637,
                    "model_output": 0.4637,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4087
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0312
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0158
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0161
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0152
                        }
                      ],
                      "others": 0.0007,
                      "total": 0.4637,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.618317
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.067479
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.034859
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.034192
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.032287
                        }
                      ],
                      "others_margin": 0.001384
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03831956908106804,
                    "model_output": 0.0383,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0404
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0028
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0021
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0015
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0015
                        }
                      ],
                      "others": -0.0022,
                      "total": 0.0383,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.636589
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.063308
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.050095
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.037917
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.037875
                        }
                      ],
                      "others_margin": -0.055712
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04099714010953903,
                    "model_output": 0.041,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0243
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0045
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0034
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0034
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.041,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.33544
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07723
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.06227
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.061869
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.060713
                        }
                      ],
                      "others_margin": -0.258062
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.019108762964606285,
                    "model_output": 0.0191,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0371
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0197
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0117
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.002
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0031,
                      "total": 0.0191,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.498632
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.420662
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.373756
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.079364
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.074477
                        }
                      ],
                      "others_margin": -0.150799
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.023888500407338142,
                    "model_output": 0.0239,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0371
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0157
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0084
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0026
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0075,
                      "total": 0.0239,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.477263
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.299177
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.207005
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.074575
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.074042
                        }
                      ],
                      "others_margin": -0.275882
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.0748579204082489,
                    "model_output": 0.0749,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1385
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0632
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0254
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0139
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0124
                        }
                      ],
                      "others": -0.0235,
                      "total": 0.0749,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.557786
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.416793
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.232479
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.133698
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.118817
                        }
                      ],
                      "others_margin": -0.272948
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.27516674995422363,
                    "model_output": 0.2752,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3297
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2799
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0357
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0328
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.025
                        }
                      ],
                      "others": -0.0122,
                      "total": 0.2752,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.32968
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.279872
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.035686
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.0328
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.024997
                        }
                      ],
                      "others_margin": -0.012263
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.717966079711914,
                    "model_output": 6.718,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0893
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.025
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0187
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0106
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.0009,
                      "total": 6.718,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.089344
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.02504
                        },
                        {
                          "name": "rating",
                          "margin": -0.01868
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.010643
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007612
                        }
                      ],
                      "others_margin": -0.000872
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 36,
                  "role_matches": 15,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0041, quality 0.618)",
              "stats": {
                "key_pass": 0.4656,
                "expected_assists": 0.0385,
                "assists": 0.0412,
                "assist_rate": 0.0412,
                "expected_goals": 0.0192,
                "goals": 0.024,
                "goal_rate": 0.024,
                "shots_on_target": 0.0752,
                "total_shots": 0.2763,
                "rating": 6.718,
                "minutes": 17.82,
                "total_pass": 13.6902,
                "accurate_pass": 11.5397,
                "duels_won": 1.2666,
                "total_long_balls": 1.0414,
                "accurate_long_balls": 0.3745,
                "total_own_half_passes": 4.5076,
                "accurate_own_half_passes": 3.7252,
                "total_opp_half_passes": 9.1826,
                "accurate_opp_half_passes": 7.8146,
                "crosses_total": 1.1305,
                "crosses_accurate": 0.1885,
                "touches": 20.381,
                "possession_lost": 4.2746,
                "dispossessed": 0.1476,
                "duels_lost": 1.2533,
                "aerial_won": 0.1248,
                "aerial_lost": 0.2232,
                "interceptions": 0.017,
                "tackles_won": 0.588,
                "tackles": 0.882,
                "clearances": 0.3496,
                "total_contest": 0.2039,
                "won_contest": 0.1031,
                "challenges_lost": 0.4503,
                "fouls": 0.3314,
                "fouls_drawn": 0.1566,
                "blocks": 0.0885,
                "big_chances_created": 0.1391,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.6127,
                "total_progression": 15.6439,
                "progressive_carries": 0.3613,
                "shots_off_target": 0.2011
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.0041,
                "reference_quality": 0.505,
                "history_matches": 36,
                "history_shrink": 0.122,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0011)",
              "stats": {
                "key_pass": 0.4656,
                "expected_assists": 0.0385,
                "assists": 0.0412,
                "assist_rate": 0.0412,
                "expected_goals": 0.0192,
                "goals": 0.024,
                "goal_rate": 0.024,
                "shots_on_target": 0.0751,
                "total_shots": 0.276,
                "rating": 6.718,
                "minutes": 17.82,
                "total_pass": 13.6902,
                "accurate_pass": 11.5397,
                "duels_won": 1.2666,
                "total_long_balls": 1.0414,
                "accurate_long_balls": 0.3745,
                "total_own_half_passes": 4.5076,
                "accurate_own_half_passes": 3.7252,
                "total_opp_half_passes": 9.1826,
                "accurate_opp_half_passes": 7.8146,
                "crosses_total": 1.1293,
                "crosses_accurate": 0.1885,
                "touches": 20.381,
                "possession_lost": 4.2746,
                "dispossessed": 0.1476,
                "duels_lost": 1.2533,
                "aerial_won": 0.1248,
                "aerial_lost": 0.2232,
                "interceptions": 0.017,
                "tackles_won": 0.5884,
                "tackles": 0.882,
                "clearances": 0.3496,
                "total_contest": 0.2039,
                "won_contest": 0.1031,
                "challenges_lost": 0.4503,
                "fouls": 0.3311,
                "fouls_drawn": 0.1564,
                "blocks": 0.0885,
                "big_chances_created": 0.1391,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.6127,
                "total_progression": 15.6439,
                "progressive_carries": 0.3613,
                "shots_off_target": 0.2011
              },
              "params": {
                "blend_weight": 0.0011,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.198,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.8 to 19.0 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0411,
                "assists": 0.044,
                "assist_rate": 0.044,
                "expected_goals": 0.0205,
                "goals": 0.0256,
                "goal_rate": 0.0256,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01
              },
              "params": {
                "expected_minutes": 19.01,
                "projection_minutes": 17.82,
                "minutes_scale": 1.0668,
                "appearance_probability": 0.707
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0411,
                "assists": 0.044,
                "assist_rate": 0.044,
                "expected_goals": 0.0205,
                "goals": 0.0256,
                "goal_rate": 0.0256,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0411,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0205,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.707
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 82.0)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 896,
                "fifa_rank": 420.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0169,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0169,
                "goal_rate": 0.0256,
                "scorer_weight": 0.0183,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0111,
                "finishing_factor": 1.0723,
                "appearance_weight": 0.707,
                "weight_rank": 14,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.4967,
                "expected_assists": 0.0387,
                "assist_rate": 0.044,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0256,
                "goals": 0,
                "shots_on_target": 0.0801,
                "total_shots": 0.2946,
                "rating": 6.718,
                "minutes": 19.01,
                "total_pass": 14.6044,
                "accurate_pass": 12.3103,
                "duels_won": 1.3512,
                "total_long_balls": 1.1109,
                "accurate_long_balls": 0.3995,
                "total_own_half_passes": 4.8086,
                "accurate_own_half_passes": 3.974,
                "total_opp_half_passes": 9.7958,
                "accurate_opp_half_passes": 8.3365,
                "crosses_total": 1.2047,
                "crosses_accurate": 0.2011,
                "touches": 21.742,
                "possession_lost": 4.5601,
                "dispossessed": 0.1476,
                "duels_lost": 1.337,
                "aerial_won": 0.1331,
                "aerial_lost": 0.2232,
                "interceptions": 0.0181,
                "tackles_won": 0.6277,
                "tackles": 0.9409,
                "clearances": 0.3729,
                "total_contest": 0.2175,
                "won_contest": 0.11,
                "challenges_lost": 0.4503,
                "fouls": 0.3532,
                "fouls_drawn": 0.1668,
                "blocks": 0.0944,
                "big_chances_created": 0.1484,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.854,
                "total_progression": 16.6886,
                "progressive_carries": 0.3854,
                "shots_off_target": 0.2145,
                "bench_appearance_probability": 0.707,
                "bench_expected_minutes": 19.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0169,
                "projected_assists": 0,
                "assist_probability": 0.0377,
                "finishing_factor": 1.0723,
                "creation_factor": 1.0318,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0377,
                "assist_rate": 0.044,
                "provider_weight": 0.0399,
                "squad_weight_total": 0.917,
                "weight_share": 0.0435,
                "creation_factor": 1.0318,
                "appearance_weight": 0.707,
                "weight_rank": 8,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jørgen Strand Larsen": {
          "player_id": 876599,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 193,
          "market_value": 41000000,
          "stats": {
            "expected_goals": 0.0724,
            "goal_rate": 0.1371,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.013,
            "key_pass": 0,
            "rating": 6.648,
            "minutes": 27,
            "total_pass": 5,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 4.3127,
            "dispossessed": 0.507,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0527,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0098,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 9,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.555,
            "bench_expected_minutes": 27.4,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0679,
            "projected_assists": 0,
            "assist_probability": 0.0128,
            "finishing_factor": 1.1672,
            "creation_factor": 1.25,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 61,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 83,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.977,
                "expected_assists": 0.3296,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0367,
                "expected_assists": 0.1719,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 84,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0884,
                "expected_assists": 0.0242,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 5,
                "clearances": 1,
                "aerial_won": 5,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363252,
              "match_date": "2026-08-28",
              "home_team": "Crystal Palace",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 63,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0471,
                "expected_assists": 0.0009,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 27,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2511,
                "expected_assists": 0.0057,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023963,
              "match_date": "2026-05-24",
              "home_team": "Crystal Palace",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 77,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0698,
                "expected_assists": 0.0137,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 14,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 61,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2023,
                "expected_assists": 0.1627,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 11,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1984,
                "expected_assists": 0.0121,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2851,
            "combined_rank_score": 964.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1418.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.648,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jørgen Strand Larsen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sergio Canales",
                  "ranking": 2846
                },
                {
                  "player_name": "Josip Šutalo",
                  "ranking": 2847
                },
                {
                  "player_name": "Orlando Mosquera",
                  "ranking": 2848
                },
                {
                  "player_name": "Kristian Dimitrov",
                  "ranking": 2849
                },
                {
                  "player_name": "Manor Solomon",
                  "ranking": 2850
                }
              ],
              "lower": [
                {
                  "player_name": "Ulugbek Khoshimov",
                  "ranking": 2852
                },
                {
                  "player_name": "Kian Ronan",
                  "ranking": 2853
                },
                {
                  "player_name": "Carlos Richards",
                  "ranking": 2854
                },
                {
                  "player_name": "Cheick Doucouré",
                  "ranking": 2855
                },
                {
                  "player_name": "Pep Chavarría",
                  "ranking": 2856
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 27.4,
            "bench_appearance_prob": 0.555,
            "market_value_adjustment": 1.0092,
            "fbref_prior_metrics": {
              "squad": "Crystal Palace",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 28.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost F_service (41 historical appearances) to 27.4 expected mins (appearance prob 0.56); FBref playing time empirical prior: 1.0 sub appearances, 28.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1167,
                "goals": 0.1458,
                "goal_rate": 0.1458,
                "shots_on_target": 0.3702,
                "total_shots": 0.8376,
                "expected_assists": 0.0185,
                "key_pass": 0.266,
                "rating": 6.648,
                "minutes": 29.25,
                "total_pass": 5.5325,
                "accurate_pass": 3.4064,
                "duels_won": 1.6879,
                "total_long_balls": 0.2653,
                "accurate_long_balls": 0.1264,
                "total_opp_half_passes": 4.1439,
                "accurate_opp_half_passes": 2.1734,
                "crosses_total": 0.0344,
                "crosses_accurate": 0.0,
                "touches": 10.5643,
                "possession_lost": 4.5619,
                "dispossessed": 0.5024,
                "duels_lost": 2.5059,
                "aerial_lost": 1.2355,
                "total_contest": 0.3012,
                "won_contest": 0.1749,
                "ball_recovery": 0.9648,
                "challenges_lost": 0.1263,
                "fouls": 0.6639,
                "fouls_drawn": 0.1556,
                "assists": 0.0561,
                "assist_rate": 0.0561,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.1337,
                "clearances": 0.2154,
                "blocks": 0.0,
                "big_chances_created": 0.06,
                "big_chances_missed": 0.2552,
                "xgot": 0.0159,
                "offsides": 0.2149,
                "ball_carries": 1.9157,
                "total_progression": 9.6551,
                "progressive_carries": 0.5078,
                "shots_off_target": 0.4674
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Manchester City",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Arsenal",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1067,
                  "totalOppositionHalfPasses": 8.8269,
                  "accurateOppositionHalfPasses": 5.9689,
                  "accuratePass": 8.8404,
                  "totalShots": 1.3532
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11668967455625534,
                    "model_output": 0.1167,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0869
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0121
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0061
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0044
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0032
                        }
                      ],
                      "others": 0.003,
                      "total": 0.1167,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.574515
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.11468
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.058848
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.04032
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.028318
                        }
                      ],
                      "others_margin": 0.02815
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14579246938228607,
                    "model_output": 0.1458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0811
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0201
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0125
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0089
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0043
                        }
                      ],
                      "others": 0.0176,
                      "total": 0.1458,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.50719
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.179036
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.115162
                        },
                        {
                          "name": "goals",
                          "margin": 0.074287
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.033893
                        }
                      ],
                      "others_margin": 0.128179
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.37018856406211853,
                    "model_output": 0.3702,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2009
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0147
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0146
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0122
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0115
                        }
                      ],
                      "others": 0.0105,
                      "total": 0.3702,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.468663
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.044668
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.04444
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.035804
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.032414
                        }
                      ],
                      "others_margin": 0.028724
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8376331925392151,
                    "model_output": 0.8376,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5516
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0562
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0505
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0374
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.0235
                        }
                      ],
                      "others": 0.0023,
                      "total": 0.8376,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551621
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.056228
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.050474
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.037408
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.023528
                        }
                      ],
                      "others_margin": 0.002423
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.018516460433602333,
                    "model_output": 0.0185,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0218
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0044
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0028
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0025
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0122,
                      "total": 0.0185,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.413096
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.11031
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.075683
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.07336
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.066955
                        }
                      ],
                      "others_margin": -0.505236
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.26599493622779846,
                    "model_output": 0.266,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.267
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0309
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0258
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0203
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0145
                        }
                      ],
                      "others": -0.0495,
                      "total": 0.266,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504413
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.079041
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.070962
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.059555
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.045016
                        }
                      ],
                      "others_margin": -0.170732
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.648012638092041,
                    "model_output": 6.648,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0496
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0124
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0107
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0415,
                      "total": 6.648,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.049594
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.012381
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011503
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.010676
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.009856
                        }
                      ],
                      "others_margin": -0.041492
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 41,
                  "role_matches": 12,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0092, quality 0.786)",
              "stats": {
                "expected_goals": 0.1178,
                "goals": 0.1471,
                "goal_rate": 0.1471,
                "shots_on_target": 0.3736,
                "total_shots": 0.8453,
                "expected_assists": 0.0187,
                "key_pass": 0.2684,
                "rating": 6.648,
                "minutes": 29.25,
                "total_pass": 5.5834,
                "accurate_pass": 3.4377,
                "duels_won": 1.7034,
                "total_long_balls": 0.2677,
                "accurate_long_balls": 0.1276,
                "total_opp_half_passes": 4.182,
                "accurate_opp_half_passes": 2.1934,
                "crosses_total": 0.0347,
                "crosses_accurate": 0.0,
                "touches": 10.6615,
                "possession_lost": 4.6039,
                "dispossessed": 0.507,
                "duels_lost": 2.529,
                "aerial_lost": 1.2469,
                "total_contest": 0.304,
                "won_contest": 0.1765,
                "ball_recovery": 0.9737,
                "challenges_lost": 0.1275,
                "fouls": 0.67,
                "fouls_drawn": 0.157,
                "assists": 0.0566,
                "assist_rate": 0.0566,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.1349,
                "clearances": 0.2174,
                "blocks": 0.0,
                "big_chances_created": 0.0606,
                "big_chances_missed": 0.2575,
                "xgot": 0.016,
                "offsides": 0.2169,
                "ball_carries": 1.9333,
                "total_progression": 9.7439,
                "progressive_carries": 0.5125,
                "shots_off_target": 0.4717
              },
              "params": {
                "market_value_eur": 41000000,
                "quality_factor": 0.7859,
                "boost_factor": 1.0092,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0047)",
              "stats": {
                "expected_goals": 0.1178,
                "goals": 0.1464,
                "goal_rate": 0.1464,
                "shots_on_target": 0.3734,
                "total_shots": 0.8444,
                "expected_assists": 0.0187,
                "key_pass": 0.2684,
                "rating": 6.648,
                "minutes": 29.25,
                "total_pass": 5.5834,
                "accurate_pass": 3.4377,
                "duels_won": 1.7034,
                "total_long_balls": 0.2677,
                "accurate_long_balls": 0.1276,
                "total_opp_half_passes": 4.182,
                "accurate_opp_half_passes": 2.1934,
                "crosses_total": 0.0345,
                "crosses_accurate": 0.0,
                "touches": 10.6615,
                "possession_lost": 4.6039,
                "dispossessed": 0.507,
                "duels_lost": 2.529,
                "aerial_lost": 1.2469,
                "total_contest": 0.304,
                "won_contest": 0.1765,
                "ball_recovery": 0.9737,
                "challenges_lost": 0.1275,
                "fouls": 0.6714,
                "fouls_drawn": 0.1578,
                "assists": 0.0563,
                "assist_rate": 0.0563,
                "interceptions": 0.0,
                "tackles_won": 0.0015,
                "tackles": 0.1349,
                "clearances": 0.2174,
                "blocks": 0.0,
                "big_chances_created": 0.0606,
                "big_chances_missed": 0.2575,
                "xgot": 0.016,
                "offsides": 0.2159,
                "ball_carries": 1.9333,
                "total_progression": 9.7439,
                "progressive_carries": 0.5125,
                "shots_off_target": 0.4717
              },
              "params": {
                "blend_weight": 0.0047,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.325,
                "prior_reliability": 0.0667,
                "competition": "Premier League",
                "squad": "Crystal Palace"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 29.2 to 27.4 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.1103,
                "goals": 0.1371,
                "goal_rate": 0.1371,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.0175,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assists": 0.0527,
                "assist_rate": 0.0527,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.015,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4
              },
              "params": {
                "expected_minutes": 27.4,
                "projection_minutes": 29.25,
                "minutes_scale": 0.9368,
                "appearance_probability": 0.555
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1103,
                "goals": 0.1371,
                "goal_rate": 0.1371,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.0175,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assists": 0.0527,
                "assist_rate": 0.0527,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.015,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1103,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.0175,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.015,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.555
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1103,
                  "after": 0.0724
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2851,
                "fifa_rank": 1418.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0679,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0679,
                "goal_rate": 0.1371,
                "scorer_weight": 0.0845,
                "squad_weight_total": 1.6514,
                "weight_share": 0.0512,
                "finishing_factor": 1.1672,
                "appearance_weight": 0.555,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0724,
                "goal_rate": 0.1371,
                "goals": 0,
                "shots_on_target": 0.3498,
                "total_shots": 0.7917,
                "expected_assists": 0.013,
                "key_pass": 0.2514,
                "rating": 6.648,
                "minutes": 27.4,
                "total_pass": 5.2303,
                "accurate_pass": 3.2203,
                "duels_won": 1.5957,
                "total_long_balls": 0.2508,
                "accurate_long_balls": 0.1195,
                "total_opp_half_passes": 3.9175,
                "accurate_opp_half_passes": 2.0547,
                "crosses_total": 0.0323,
                "crosses_accurate": 0.0,
                "touches": 9.9872,
                "possession_lost": 4.3127,
                "dispossessed": 0.507,
                "duels_lost": 2.369,
                "aerial_lost": 1.2469,
                "total_contest": 0.2848,
                "won_contest": 0.1653,
                "ball_recovery": 0.9121,
                "challenges_lost": 0.1275,
                "fouls": 0.6289,
                "fouls_drawn": 0.1478,
                "assist_rate": 0.0527,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0014,
                "tackles": 0.1264,
                "clearances": 0.2036,
                "blocks": 0.0,
                "big_chances_created": 0.0568,
                "big_chances_missed": 0.2412,
                "xgot": 0.0098,
                "offsides": 0.2159,
                "ball_carries": 1.811,
                "total_progression": 9.1276,
                "progressive_carries": 0.4801,
                "shots_off_target": 0.4419,
                "bench_appearance_probability": 0.555,
                "bench_expected_minutes": 27.4,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0679,
                "projected_assists": 0,
                "assist_probability": 0.0128,
                "finishing_factor": 1.1672,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0128,
                "assist_rate": 0.0527,
                "provider_weight": 0.0163,
                "squad_weight_total": 0.917,
                "weight_share": 0.0177,
                "creation_factor": 1.25,
                "appearance_weight": 0.555,
                "weight_rank": 13,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Quinten Timber": {
          "player_id": 959805,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 177,
          "market_value": 24000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0353,
            "assist_rate": 0.0657,
            "assists": 0,
            "expected_goals": 0.0357,
            "goal_rate": 0.1003,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.763,
            "minutes": 23,
            "total_pass": 40,
            "accurate_pass": 32,
            "duels_won": 9,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 16,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 16,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 63,
            "possession_lost": 13.976,
            "dispossessed": 1.0908,
            "duels_lost": 6,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 5,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0154,
            "ball_carries": 17,
            "total_progression": 93,
            "progressive_carries": 3,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.54,
            "bench_expected_minutes": 22.89,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.901,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0345,
            "projected_assists": 0,
            "assist_probability": 0.0342,
            "finishing_factor": 1.25,
            "creation_factor": 1.1687,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363883,
              "match_date": "2026-10-18 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Brighton",
              "away_team": "Crystal Palace",
              "home_score_current": 5.0,
              "away_score_current": 0.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Brighton",
              "stats": {
                "minutes": 45,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363875,
              "match_date": "2026-10-11 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Crystal Palace",
              "away_team": "Forest",
              "home_score_current": 3.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Crystal Palace",
              "opponent": "Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1398,
                "expected_assists": 0.0773,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363866,
              "match_date": "2026-09-20",
              "home_team": "Leeds United",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1185,
                "expected_assists": 0.0307,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 27,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363643,
              "match_date": "2026-09-12",
              "home_team": "Crystal Palace",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1028,
                "expected_assists": 0.0329,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 46,
                "accurate_pass": 35,
                "tackles": 8,
                "tackles_won": 4,
                "clearances": 2,
                "duels_won": 13,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Fulham",
              "stats": {
                "minutes": 74,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0195,
                "expected_assists": 0.0022,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1488,
            "combined_rank_score": 616.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 3.0,
            "fifa_rank": 896.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.763,
            "source_file": "data/player_rankings.csv",
            "player_name": "Quinten Timber",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Bojan Mlađović",
                  "ranking": 1483
                },
                {
                  "player_name": "Farkhod Sokhibzhonov",
                  "ranking": 1484
                },
                {
                  "player_name": "Florian Lejeune",
                  "ranking": 1485
                },
                {
                  "player_name": "Dimitrios Valkanis",
                  "ranking": 1486
                },
                {
                  "player_name": "Patrick Dorgu",
                  "ranking": 1487
                }
              ],
              "lower": [
                {
                  "player_name": "Jon Pacheco",
                  "ranking": 1489
                },
                {
                  "player_name": "Brahim Díaz",
                  "ranking": 1490
                },
                {
                  "player_name": "Lucas Assadi",
                  "ranking": 1491
                },
                {
                  "player_name": "Bryan Cristante",
                  "ranking": 1492
                },
                {
                  "player_name": "Lucas Hernández",
                  "ranking": 1493
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.88735814265611,
            "bench_appearance_prob": 0.5403344610298232,
            "market_value_adjustment": 1.0307,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (3 historical appearances) to 22.9 expected mins (appearance prob 0.54)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4813,
                "expected_assists": 0.0395,
                "assists": 0.0529,
                "assist_rate": 0.0529,
                "expected_goals": 0.045,
                "goals": 0.0808,
                "goal_rate": 0.0808,
                "shots_on_target": 0.1738,
                "total_shots": 0.5917,
                "rating": 6.763,
                "minutes": 19.0,
                "total_pass": 32.3052,
                "accurate_pass": 25.4306,
                "duels_won": 7.0816,
                "total_long_balls": 2.9417,
                "accurate_long_balls": 1.3887,
                "total_own_half_passes": 13.4121,
                "accurate_own_half_passes": 12.52,
                "total_opp_half_passes": 18.8931,
                "accurate_opp_half_passes": 12.9106,
                "crosses_total": 0.7191,
                "crosses_accurate": 0.0,
                "touches": 50.9174,
                "possession_lost": 11.2566,
                "dispossessed": 1.0583,
                "duels_lost": 4.5053,
                "aerial_won": 0.3887,
                "aerial_lost": 1.3887,
                "interceptions": 0.6696,
                "tackles_won": 1.9913,
                "tackles": 3.7017,
                "clearances": 1.0496,
                "total_contest": 1.7104,
                "won_contest": 0.9913,
                "challenges_lost": 0.3887,
                "fouls": 1.3392,
                "fouls_drawn": 2.0,
                "blocks": 0.2809,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0194,
                "ball_carries": 13.4072,
                "total_progression": 74.5304,
                "progressive_carries": 2.7687,
                "shots_off_target": 0.4179
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Fulham",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.7191,
                  "creative_index": 0.325,
                  "expectedGoals": 0.0855,
                  "expectedAssists": 0.0234,
                  "onTargetScoringAttempt": 0.3304
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4813484847545624,
                    "model_output": 0.4813,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3295
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0745
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0534
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.038
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0315
                        }
                      ],
                      "others": -0.09,
                      "total": 0.4813,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.464915
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.125637
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.088374
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.068115
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.056653
                        }
                      ],
                      "others_margin": -0.171235
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.039462026208639145,
                    "model_output": 0.0395,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0339
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0076
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0036
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.003
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.0395,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.501973
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.158032
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.084826
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.070318
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.050379
                        }
                      ],
                      "others_margin": -0.051478
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.052858591079711914,
                    "model_output": 0.0529,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0206
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0045
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0043
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0036
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0055,
                      "total": 0.0529,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.277154
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.072372
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.068624
                        },
                        {
                          "name": "goals",
                          "margin": -0.056884
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.04107
                        }
                      ],
                      "others_margin": -0.098873
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04498733952641487,
                    "model_output": 0.045,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0403
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0089
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0028
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.045,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.556549
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.152443
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.094997
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.078026
                        },
                        {
                          "name": "goals",
                          "margin": -0.055072
                        }
                      ],
                      "others_margin": -0.109254
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.0807780995965004,
                    "model_output": 0.0808,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0404
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.02
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0082
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0068
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0045
                        }
                      ],
                      "others": -0.0023,
                      "total": 0.0808,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.53325
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.298889
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.101061
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.082612
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.056006
                        }
                      ],
                      "others_margin": -0.029728
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.17378737032413483,
                    "model_output": 0.1738,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1504
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0156
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0112
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0075
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.1738,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.62413
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.21186
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07545
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058114
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.040772
                        }
                      ],
                      "others_margin": -0.036278
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5916868448257446,
                    "model_output": 0.5917,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5022
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2742
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0501
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0439
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0423
                        }
                      ],
                      "others": -0.0345,
                      "total": 0.5917,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.502174
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.274159
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.050108
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.043869
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.042313
                        }
                      ],
                      "others_margin": -0.034472
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.763008117675781,
                    "model_output": 6.763,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0873
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0632
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.016
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0158
                        },
                        {
                          "name": "history_matches",
                          "contribution": -0.0116
                        }
                      ],
                      "others": -0.05,
                      "total": 6.763,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.087284
                        },
                        {
                          "name": "rating",
                          "margin": 0.063206
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.016021
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.015844
                        },
                        {
                          "name": "history_matches",
                          "margin": -0.01159
                        }
                      ],
                      "others_margin": -0.050019
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0307, quality 0.669)",
              "stats": {
                "key_pass": 0.4961,
                "expected_assists": 0.0407,
                "assists": 0.0545,
                "assist_rate": 0.0545,
                "expected_goals": 0.0464,
                "goals": 0.0833,
                "goal_rate": 0.0833,
                "shots_on_target": 0.1791,
                "total_shots": 0.6099,
                "rating": 6.763,
                "minutes": 19.0,
                "total_pass": 33.297,
                "accurate_pass": 26.2113,
                "duels_won": 7.299,
                "total_long_balls": 3.032,
                "accurate_long_balls": 1.4313,
                "total_own_half_passes": 13.8239,
                "accurate_own_half_passes": 12.9044,
                "total_opp_half_passes": 19.4731,
                "accurate_opp_half_passes": 13.307,
                "crosses_total": 0.7412,
                "crosses_accurate": 0.0,
                "touches": 52.4806,
                "possession_lost": 11.6022,
                "dispossessed": 1.0908,
                "duels_lost": 4.6436,
                "aerial_won": 0.4006,
                "aerial_lost": 1.4313,
                "interceptions": 0.6902,
                "tackles_won": 2.0524,
                "tackles": 3.8153,
                "clearances": 1.0818,
                "total_contest": 1.7629,
                "won_contest": 1.0217,
                "challenges_lost": 0.4006,
                "fouls": 1.3803,
                "fouls_drawn": 2.0614,
                "blocks": 0.2895,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.02,
                "ball_carries": 13.8188,
                "total_progression": 76.8185,
                "progressive_carries": 2.8537,
                "shots_off_target": 0.4307
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0307,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.0 to 22.9 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.049,
                "assists": 0.0657,
                "assist_rate": 0.0657,
                "expected_goals": 0.0559,
                "goals": 0.1003,
                "goal_rate": 0.1003,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0241,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "expected_minutes": 22.89,
                "projection_minutes": 19.0,
                "minutes_scale": 1.2046,
                "appearance_probability": 0.54
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.049,
                "assists": 0.0657,
                "assist_rate": 0.0657,
                "expected_goals": 0.0559,
                "goals": 0.1003,
                "goal_rate": 0.1003,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0241,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.049,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0559,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0241,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.60 (squad xG sum 1.3541, xG scale 1.1831, xA scale 1.3335, team xA 1.04 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687
              },
              "params": {
                "team_lambda": 1.602,
                "squad_xg_sum": 1.3541,
                "squad_xa_sum": 0.7809,
                "team_expected_assists": 1.0413,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1831,
                "xa_scale": 1.3335,
                "opponent_lambda": 1.686,
                "scoreline_reset": true,
                "appearance_weight": 0.54
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0559,
                  "after": 0.0357
                },
                {
                  "stat": "expected_assists",
                  "before": 0.049,
                  "after": 0.0353
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1488,
                "fifa_rank": 896.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0345,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0345,
                "goal_rate": 0.1003,
                "scorer_weight": 0.0446,
                "squad_weight_total": 1.6514,
                "weight_share": 0.027,
                "finishing_factor": 1.25,
                "appearance_weight": 0.54,
                "weight_rank": 12,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jean-Philippe Mateta",
                    "weight": 0.3822,
                    "already": 0,
                    "effective_weight": 0.3822,
                    "runner_up": "Ismaïla Sarr",
                    "runner_up_effective_weight": 0.3693
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.5976,
                "expected_assists": 0.0353,
                "assist_rate": 0.0657,
                "assists": 0,
                "expected_goals": 0.0357,
                "goal_rate": 0.1003,
                "goals": 0,
                "shots_on_target": 0.2157,
                "total_shots": 0.7347,
                "rating": 6.763,
                "minutes": 22.89,
                "total_pass": 40.1095,
                "accurate_pass": 31.5741,
                "duels_won": 8.7924,
                "total_long_balls": 3.6523,
                "accurate_long_balls": 1.7241,
                "total_own_half_passes": 16.6522,
                "accurate_own_half_passes": 15.5446,
                "total_opp_half_passes": 23.4573,
                "accurate_opp_half_passes": 16.0296,
                "crosses_total": 0.8928,
                "crosses_accurate": 0.0,
                "touches": 63.218,
                "possession_lost": 13.976,
                "dispossessed": 1.0908,
                "duels_lost": 5.5937,
                "aerial_won": 0.4826,
                "aerial_lost": 1.4313,
                "interceptions": 0.8314,
                "tackles_won": 2.4723,
                "tackles": 4.5959,
                "clearances": 1.3031,
                "total_contest": 2.1236,
                "won_contest": 1.2307,
                "challenges_lost": 0.4006,
                "fouls": 1.6627,
                "fouls_drawn": 2.4832,
                "blocks": 0.3487,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0154,
                "ball_carries": 16.6461,
                "total_progression": 92.5354,
                "progressive_carries": 3.4376,
                "shots_off_target": 0.5188,
                "bench_appearance_probability": 0.54,
                "bench_expected_minutes": 22.89,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.901,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0345,
                "projected_assists": 0,
                "assist_probability": 0.0342,
                "finishing_factor": 1.25,
                "creation_factor": 1.1687,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0342,
                "assist_rate": 0.0657,
                "provider_weight": 0.0413,
                "squad_weight_total": 0.917,
                "weight_share": 0.045,
                "creation_factor": 1.1687,
                "appearance_weight": 0.54,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Adam Wharton",
                    "weight": 0.1583,
                    "already": 0,
                    "effective_weight": 0.1583,
                    "runner_up": "Daichi Kamada",
                    "runner_up_effective_weight": 0.1237,
                    "blocked_own_goal": [
                      "Jean-Philippe Mateta"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.6,
        "expected_assists": 1.04,
        "total_shots": 13,
        "shots_on_target": 2,
        "total_passes": 431,
        "interceptions": 7,
        "tackles": 24,
        "avg_rating": 6.82,
        "possession_estimated_pct": 50.0,
        "pressing_actions_per_90": 7.9
      }
    },
    "Newcastle": {
      "formation": "4-2-3-1",
      "players": {
        "Lukáš Horníček": {
          "player_id": 963744,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 21,
          "height": 194,
          "market_value": 25000000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.0206,
            "rating": 6.9391,
            "minutes": 90,
            "total_pass": 32,
            "accurate_pass": 19,
            "total_long_balls": 17,
            "accurate_long_balls": 4,
            "touches": 45,
            "clearances": 2,
            "ball_recovery": 7,
            "high_claims": 0,
            "punches": 1.2724,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 3,
            "possession_lost": 13.3245,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 19,
            "accurate_own_half_passes": 16,
            "gk_engine_opponent_lambda": 1.3635,
            "shots_faced": 15.2,
            "expected_saves": 3.72,
            "high_pressure_saves": 1.28,
            "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
            "matchup_zone": "Goalkeeper shot-stopping context",
            "antagonist_source": "defensive_duel",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "finishing_factor": 1.0,
            "creation_factor": 1.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "clearances": 1,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": 0.0521
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 90,
                "rating": 5.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 25,
                "clearances": 1,
                "ball_recovery": 10,
                "saves": 2,
                "goals_prevented": -1.3789
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 15,
                "clearances": 3,
                "ball_recovery": 12,
                "saves": 3,
                "goals_prevented": 0.4351
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 19,
                "clearances": 3,
                "ball_recovery": 4,
                "saves": 3,
                "goals_prevented": -1.0868
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 24,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 4,
                "goals_prevented": -0.0004
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 16,
                "clearances": 2,
                "ball_recovery": 4,
                "saves": 4,
                "goals_prevented": 0.906
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 22,
                "clearances": 3,
                "ball_recovery": 5,
                "saves": 5,
                "goals_prevented": 0.9684
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1917,
            "combined_rank_score": 743.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 52.0,
            "sofascore_rating": 7.7,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1434.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9391,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lukáš Horníček",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Juan Fuentes",
                  "ranking": 1912
                },
                {
                  "player_name": "Corey Hollman",
                  "ranking": 1913
                },
                {
                  "player_name": "Elia Caprile",
                  "ranking": 1914
                },
                {
                  "player_name": "Lee Taek-Geun",
                  "ranking": 1915
                },
                {
                  "player_name": "Carlos Augusto",
                  "ranking": 1916
                }
              ],
              "lower": [
                {
                  "player_name": "Francisco Conceição",
                  "ranking": 1918
                },
                {
                  "player_name": "Daniel Svensson",
                  "ranking": 1919
                },
                {
                  "player_name": "Víctor Campuzano",
                  "ranking": 1920
                },
                {
                  "player_name": "Javier Altamirano",
                  "ranking": 1921
                },
                {
                  "player_name": "Kim Beom-Su",
                  "ranking": 1922
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.582,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "G_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "accurateLongBalls",
              "totalOwnHalfPasses",
              "accurateOwnHalfPasses",
              "saves",
              "savedShotsFromInsideTheBox",
              "goodHighClaim",
              "punches",
              "aerialWon",
              "totalKeeperSweeper",
              "accurateKeeperSweeper",
              "totalClearance",
              "ballRecovery",
              "touches",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "goalsPrevented",
              "rating",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.582,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0258,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (G_service) evaluated 5 historical appearances across 3 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 3.0714,
                "goals_prevented": 0.02,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 31.2051,
                "accurate_pass": 18.821,
                "total_long_balls": 16.0968,
                "accurate_long_balls": 4.1367,
                "touches": 43.4843,
                "clearances": 2.25,
                "ball_recovery": 6.6875,
                "high_claims": 0.3887,
                "punches": 1.2404,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3604,
                "sweeper_accurate": 0.3604,
                "saves_inside_box": 2.7671,
                "possession_lost": 12.9894,
                "duels_won": 0.1948,
                "duels_lost": 0.2696,
                "total_contest": 0.4645,
                "won_contest": 0.1948,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 18.5421,
                "accurate_own_half_passes": 15.5299
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-25T10:04:36.867499+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 199,
                    "rows": 6796
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.9
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 0.3604,
                  "distribution_accuracy": 0.8446,
                  "sweeper_accuracy": 0.1656,
                  "goalkeeperValueNormalized": 0.5554,
                  "save_contribution": 3.7964,
                  "accurateKeeperSweeper": 0.2057
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 3.071416139602661,
                    "model_output": 3.0714,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0415
                      },
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0394
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0368
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0362
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0362
                      }
                    ],
                    "decomposition": {
                      "base": 2.9286,
                      "items": [
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0415
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0377
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0294
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0287
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0214
                        }
                      ],
                      "others": -0.0159,
                      "total": 3.0714,
                      "log_link": true,
                      "margin_base": 1.074537,
                      "item_margins": [
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.014083
                        },
                        {
                          "name": "saves",
                          "margin": 0.012607
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.009721
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.009421
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.006944
                        }
                      ],
                      "others_margin": -0.005174
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.020041555166244507,
                    "model_output": 0.02,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "punches",
                        "importance": 0.041
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0398
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0385
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0374
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0356
                      }
                    ],
                    "decomposition": {
                      "base": -0.0166,
                      "items": [
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0184
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0152
                        },
                        {
                          "name": "commanding_index",
                          "contribution": 0.0145
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0136
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0106
                        }
                      ],
                      "others": 0.0223,
                      "total": 0.02,
                      "log_link": false,
                      "margin_base": -0.016613,
                      "item_margins": [
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.018372
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.015224
                        },
                        {
                          "name": "commanding_index",
                          "margin": 0.014542
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.013617
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.01061
                        }
                      ],
                      "others_margin": 0.022254
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.939111232757568,
                    "model_output": 6.9391,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0429
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0382
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0371
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.036
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0359
                      }
                    ],
                    "decomposition": {
                      "base": 7.0091,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0279
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.025
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0247
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.0212
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0205
                        }
                      ],
                      "others": -0.0475,
                      "total": 6.9391,
                      "log_link": false,
                      "margin_base": 7.009122,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.027901
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.02501
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.024748
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.021208
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.020549
                        }
                      ],
                      "others_margin": -0.047495
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 5,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0258, quality 0.677)",
              "stats": {
                "saves": 3.1507,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306
              },
              "params": {
                "market_value_eur": 25000000,
                "quality_factor": 0.6773,
                "boost_factor": 1.0258,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0433)",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306
              },
              "params": {
                "blend_weight": 0.0433,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 3.1507,
                  "after": 3.2092
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306,
                "gk_engine_opponent_lambda": 1.3635,
                "shots_faced": 13.0,
                "expected_saves": 3.19,
                "high_pressure_saves": 1.09,
                "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.3635
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306,
                "gk_engine_opponent_lambda": 1.3635,
                "shots_faced": 13.0,
                "expected_saves": 3.19,
                "high_pressure_saves": 1.09,
                "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306,
                "gk_engine_opponent_lambda": 1.3635,
                "shots_faced": 15.2,
                "expected_saves": 3.72,
                "high_pressure_saves": 1.28,
                "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 13.0,
                  "after": 15.2
                },
                {
                  "stat": "expected_saves",
                  "before": 3.19,
                  "after": 3.72
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.09,
                  "after": 1.28
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 77.0)",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306,
                "gk_engine_opponent_lambda": 1.3635,
                "shots_faced": 15.2,
                "expected_saves": 3.72,
                "high_pressure_saves": 1.28,
                "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1917,
                "fifa_rank": 1434.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306,
                "gk_engine_opponent_lambda": 1.3635,
                "shots_faced": 15.2,
                "expected_saves": 3.72,
                "high_pressure_saves": 1.28,
                "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.813,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "saves": 3.2092,
                "goals_prevented": 0.0206,
                "rating": 6.9391,
                "minutes": 90.0,
                "total_pass": 32.0102,
                "accurate_pass": 19.3066,
                "total_long_balls": 16.5121,
                "accurate_long_balls": 4.2434,
                "touches": 44.6062,
                "clearances": 2.3081,
                "ball_recovery": 6.86,
                "high_claims": 0.3987,
                "punches": 1.2724,
                "aerial_won": 0.0,
                "sweeper_actions": 0.3697,
                "sweeper_accurate": 0.3697,
                "saves_inside_box": 2.8385,
                "possession_lost": 13.3245,
                "duels_won": 0.1998,
                "duels_lost": 0.2766,
                "total_contest": 0.4765,
                "won_contest": 0.1998,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 19.0205,
                "accurate_own_half_passes": 15.9306,
                "gk_engine_opponent_lambda": 1.3635,
                "shots_faced": 15.2,
                "expected_saves": 3.72,
                "high_pressure_saves": 1.28,
                "opponent_faced": "Ismaïla Sarr, Jean-Philippe Mateta",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Yoane Wissa": {
          "player_id": 805123,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 176,
          "market_value": 23000000,
          "stats": {
            "expected_goals": 0.3323,
            "goal_rate": 0.2621,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0573,
            "key_pass": 1,
            "rating": 6.7039,
            "minutes": 83,
            "total_pass": 16,
            "accurate_pass": 11,
            "duels_won": 5,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 8.6249,
            "dispossessed": 1.1889,
            "duels_lost": 7,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 2,
            "assist_rate": 0.1081,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.3935,
            "offsides": 0,
            "ball_carries": 8,
            "total_progression": 55,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9038,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Axel Disasi, Chris Richards",
            "opponent_faced": "Axel Disasi, Chris Richards",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.2827,
            "projected_assists": 0,
            "assist_probability": 0.0557,
            "finishing_factor": 0.9845,
            "creation_factor": 1.25,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4676,
                "expected_assists": 0.0745,
                "total_shots": 7,
                "shots_off_target": 4,
                "total_pass": 15,
                "accurate_pass": 10,
                "tackles": 1,
                "aerial_won": 5,
                "duels_won": 8,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 78,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1463,
                "expected_assists": 0.011,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 26,
                "accurate_pass": 21,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8402,
                "expected_assists": 0.0088,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 16,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 5.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1567,
                "expected_assists": 0.0044,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0313,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 82,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3459,
                "expected_assists": 0.0004,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 89,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.9951,
                "expected_assists": 0.0159,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 17,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 4,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 11,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 24,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0028,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 9,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 13,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 19,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0062,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1052,
            "combined_rank_score": 476.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 278.0,
            "sofascore_rating": 7.0667,
            "sofascore_appearances": 4.0,
            "fifa_rank": 674.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7039,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yoane Wissa",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gabriel Martinelli",
                  "ranking": 1047
                },
                {
                  "player_name": "Marcus Tavernier",
                  "ranking": 1048
                },
                {
                  "player_name": "Wojciech Szczęsny",
                  "ranking": 1049
                },
                {
                  "player_name": "Matías Bórquez",
                  "ranking": 1050
                },
                {
                  "player_name": "Alessandro Buongiorno",
                  "ranking": 1051
                }
              ],
              "lower": [
                {
                  "player_name": "Jong-seong Lee",
                  "ranking": 1053
                },
                {
                  "player_name": "Jun-hong Kim",
                  "ranking": 1054
                },
                {
                  "player_name": "Kim Seong-Ju",
                  "ranking": 1055
                },
                {
                  "player_name": "Zach Lisolajski",
                  "ranking": 1056
                },
                {
                  "player_name": "Izzatillo Pulatov",
                  "ranking": 1057
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 24,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 24,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.008,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 170.0,
              "goals_per90": 0.5263157894736842,
              "assists_per90": 0.5263157894736842,
              "shots_per90": 3.18,
              "shots_on_target_pct": 33.3,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (F_service) evaluated 24 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.13, gls/90: 0.5263157894736842, ast/90: 0.5263157894736842)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.293,
                "goals": 0.2849,
                "goal_rate": 0.2849,
                "shots_on_target": 0.8313,
                "total_shots": 1.7021,
                "expected_assists": 0.0362,
                "key_pass": 0.6539,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.7526,
                "accurate_pass": 10.9177,
                "duels_won": 4.6488,
                "total_long_balls": 0.1885,
                "accurate_long_balls": 0.1885,
                "total_opp_half_passes": 10.2407,
                "accurate_opp_half_passes": 6.2711,
                "crosses_total": 0.141,
                "crosses_accurate": 0.141,
                "touches": 27.7824,
                "possession_lost": 8.5564,
                "dispossessed": 1.1795,
                "duels_lost": 6.6464,
                "aerial_lost": 2.7999,
                "total_contest": 1.457,
                "won_contest": 0.6658,
                "ball_recovery": 2.5492,
                "challenges_lost": 0.1952,
                "fouls": 1.6806,
                "fouls_drawn": 1.5791,
                "assists": 0.1019,
                "assist_rate": 0.1019,
                "interceptions": 0.0,
                "tackles_won": 0.0532,
                "tackles": 0.7466,
                "clearances": 0.8021,
                "blocks": 0.2818,
                "big_chances_created": 0.1659,
                "big_chances_missed": 0.758,
                "xgot": 0.3471,
                "offsides": 0.3196,
                "ball_carries": 7.5046,
                "total_progression": 54.8431,
                "progressive_carries": 1.8137,
                "shots_off_target": 0.8708
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1531,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1301,
                    "rating": 5.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1106,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.094,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0799,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0679,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0577,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0491,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.0417,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0355,
                    "rating": 5.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3257,
                  "totalOppositionHalfPasses": 7.7662,
                  "accurateOppositionHalfPasses": 4.5447,
                  "accuratePass": 8.3277,
                  "totalShots": 1.1363
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.2930096387863159,
                    "model_output": 0.293,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0587
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0398
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0162
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0121
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0098
                        }
                      ],
                      "others": -0.0184,
                      "total": 0.293,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.258372
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.143672
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.053032
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.039324
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.032138
                        }
                      ],
                      "others_margin": -0.060762
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2849084138870239,
                    "model_output": 0.2849,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0411
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0465
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0352
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0114
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0116
                        }
                      ],
                      "others": 0.0058,
                      "total": 0.2849,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.18387
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.17375
                        },
                        {
                          "name": "goals",
                          "margin": -0.128585
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.043527
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.042399
                        }
                      ],
                      "others_margin": 0.020317
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8313297629356384,
                    "model_output": 0.8313,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1897
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0552
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.04
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0347
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0233
                        }
                      ],
                      "others": 0.1008,
                      "total": 0.8313,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.302466
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.073224
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.052527
                        },
                        {
                          "name": "goals",
                          "margin": -0.04792
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.032452
                        }
                      ],
                      "others_margin": 0.129371
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.7021470069885254,
                    "model_output": 1.7021,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4773
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1371
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.051
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0401
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0368
                        }
                      ],
                      "others": 0.0091,
                      "total": 1.7021,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.477301
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.13712
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.050983
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.040052
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.036755
                        }
                      ],
                      "others_margin": 0.009083
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03619147837162018,
                    "model_output": 0.0362,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.024
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0121
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0098
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0078
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.006
                        }
                      ],
                      "others": -0.0164,
                      "total": 0.0362,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.317779
                        },
                        {
                          "name": "rating",
                          "margin": -0.147924
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.137959
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.125543
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.108232
                        }
                      ],
                      "others_margin": -0.372597
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.653871476650238,
                    "model_output": 0.6539,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2346
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0567
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0454
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0367
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0263
                        }
                      ],
                      "others": -0.0896,
                      "total": 0.6539,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.298679
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.06448
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.054741
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.046571
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.0347
                        }
                      ],
                      "others_margin": -0.128471
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.703946113586426,
                    "model_output": 6.7039,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0481
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0317
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0239
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0153
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0147
                        }
                      ],
                      "others": -0.0208,
                      "total": 6.7039,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.048099
                        },
                        {
                          "name": "rating",
                          "margin": -0.031681
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.023914
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.015325
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.014679
                        }
                      ],
                      "others_margin": -0.020714
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 24,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0080, quality 0.660)",
              "stats": {
                "expected_goals": 0.2954,
                "goals": 0.2872,
                "goal_rate": 0.2872,
                "shots_on_target": 0.838,
                "total_shots": 1.7158,
                "expected_assists": 0.0365,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1421,
                "crosses_accurate": 0.1421,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.694,
                "fouls_drawn": 1.5917,
                "assists": 0.1027,
                "assist_rate": 0.1027,
                "interceptions": 0.0,
                "tackles_won": 0.0536,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.7641,
                "xgot": 0.3499,
                "offsides": 0.3222,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.8778
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.008,
                "reference_quality": 0.505,
                "history_matches": 24,
                "history_shrink": 0.1724,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0142)",
              "stats": {
                "expected_goals": 0.2954,
                "goals": 0.29,
                "goal_rate": 0.29,
                "shots_on_target": 0.8399,
                "total_shots": 1.733,
                "expected_assists": 0.0365,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1421,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assists": 0.1081,
                "assist_rate": 0.1081,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.7641,
                "xgot": 0.3499,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.8778
              },
              "params": {
                "blend_weight": 0.0142,
                "history_matches": 24,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9201,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.5917,
                  "after": 1.6241
                },
                {
                  "stat": "totalShots",
                  "before": 1.7158,
                  "after": 1.733
                },
                {
                  "stat": "totalOffside",
                  "before": 0.3222,
                  "after": 0.3314
                },
                {
                  "stat": "goalAssist",
                  "before": 0.1027,
                  "after": 0.1081
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2954,
                "goals": 0.29,
                "goal_rate": 0.29,
                "shots_on_target": 0.8399,
                "total_shots": 1.733,
                "expected_assists": 0.0365,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1401,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assists": 0.1081,
                "assist_rate": 0.1081,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.7641,
                "xgot": 0.3499,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.8778
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.267,
                "goals": 0.2621,
                "goal_rate": 0.2621,
                "shots_on_target": 0.7591,
                "total_shots": 1.5663,
                "expected_assists": 0.0365,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1401,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assists": 0.1081,
                "assist_rate": 0.1081,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.6906,
                "xgot": 0.3162,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.7934,
                "duel_xg_multiplier": 0.9038,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Axel Disasi, Chris Richards",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9038,
                  "skill_edge": -0.0134,
                  "height_edge": -0.052,
                  "attacker_skill": 0.6595,
                  "defender_skill": 0.6893,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Axel Disasi",
                      "market_value": 15500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6376
                    },
                    {
                      "player": "Chris Richards",
                      "market_value": 25000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7411
                    }
                  ],
                  "xg_override": 0.267
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.733,
                  "after": 1.5663
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8778,
                  "after": 0.7934
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8399,
                  "after": 0.7591
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.7641,
                  "after": 0.6906
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3499,
                  "after": 0.3162
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2954,
                  "after": 0.267
                },
                {
                  "stat": "goals",
                  "before": 0.29,
                  "after": 0.2621
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.267,
                "goal_rate": 0.2621,
                "goals": 0,
                "shots_on_target": 0.7591,
                "total_shots": 1.5663,
                "expected_assists": 0.0365,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1401,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assist_rate": 0.1081,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.6906,
                "xgot": 0.3162,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.7934,
                "duel_xg_multiplier": 0.9038,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.3323,
                "goal_rate": 0.2621,
                "goals": 0,
                "shots_on_target": 0.7591,
                "total_shots": 1.5663,
                "expected_assists": 0.0573,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1401,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assist_rate": 0.1081,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.6906,
                "xgot": 0.3935,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.7934,
                "duel_xg_multiplier": 0.9038,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9845,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.267,
                  "after": 0.3323
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0365,
                  "after": 0.0573
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 80.0)",
              "stats": {
                "expected_goals": 0.3323,
                "goal_rate": 0.2621,
                "goals": 0,
                "shots_on_target": 0.7591,
                "total_shots": 1.5663,
                "expected_assists": 0.0573,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1401,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assist_rate": 0.1081,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.6906,
                "xgot": 0.3935,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.7934,
                "duel_xg_multiplier": 0.9038,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9845,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1052,
                "fifa_rank": 674.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.3323,
                "goal_rate": 0.2621,
                "goals": 1,
                "shots_on_target": 0.7591,
                "total_shots": 1.5663,
                "expected_assists": 0.0573,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1401,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assist_rate": 0.1081,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.6906,
                "xgot": 0.3935,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.7934,
                "duel_xg_multiplier": 0.9038,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2827,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9845,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 1,
                "goal_probability": 0.2827,
                "goal_rate": 0.2621,
                "scorer_weight": 0.3271,
                "squad_weight_total": 1.813,
                "weight_share": 0.1804,
                "finishing_factor": 0.9845,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.3323,
                "goal_rate": 0.2621,
                "goals": 1,
                "shots_on_target": 0.7591,
                "total_shots": 1.5663,
                "expected_assists": 0.0573,
                "key_pass": 0.6591,
                "rating": 6.7039,
                "minutes": 82.81,
                "total_pass": 15.8786,
                "accurate_pass": 11.005,
                "duels_won": 4.686,
                "total_long_balls": 0.19,
                "accurate_long_balls": 0.19,
                "total_opp_half_passes": 10.3226,
                "accurate_opp_half_passes": 6.3213,
                "crosses_total": 0.1401,
                "crosses_accurate": 0.1401,
                "touches": 28.0047,
                "possession_lost": 8.6249,
                "dispossessed": 1.1889,
                "duels_lost": 6.6996,
                "aerial_lost": 2.8223,
                "total_contest": 1.4687,
                "won_contest": 0.6711,
                "ball_recovery": 2.5696,
                "challenges_lost": 0.1968,
                "fouls": 1.6906,
                "fouls_drawn": 1.6241,
                "assist_rate": 0.1081,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0528,
                "tackles": 0.7526,
                "clearances": 0.8085,
                "blocks": 0.2841,
                "big_chances_created": 0.1672,
                "big_chances_missed": 0.6906,
                "xgot": 0.3935,
                "offsides": 0.3314,
                "ball_carries": 7.5646,
                "total_progression": 55.2818,
                "progressive_carries": 1.8282,
                "shots_off_target": 0.7934,
                "duel_xg_multiplier": 0.9038,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2827,
                "projected_assists": 0,
                "assist_probability": 0.0557,
                "finishing_factor": 0.9845,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0557,
                "assist_rate": 0.1081,
                "provider_weight": 0.0716,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0613,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Harvey Barnes": {
          "player_id": 855647,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 11,
          "height": 181,
          "market_value": 38000000,
          "stats": {
            "expected_goals": 0.1974,
            "goal_rate": 0.2292,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.1803,
            "key_pass": 1,
            "rating": 6.8762,
            "minutes": 85,
            "total_pass": 22,
            "accurate_pass": 18,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 12,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 37,
            "possession_lost": 10.4053,
            "dispossessed": 0.6485,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.3738,
            "assists": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2907,
            "offsides": 0,
            "ball_carries": 14,
            "total_progression": 71,
            "progressive_carries": 4,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0062,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.204,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Axel Disasi, Chris Richards",
            "opponent_faced": "Axel Disasi, Chris Richards",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1791,
            "projected_assists": 1,
            "assist_probability": 0.165,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.273,
                "expected_assists": 0.0406,
                "total_shots": 3,
                "total_pass": 20,
                "accurate_pass": 18,
                "key_pass": 3,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3468,
                "expected_assists": 0.3539,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 21,
                "key_pass": 4,
                "tackles": 2,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_goals": 0.1061,
                "expected_assists": 0.1099,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 3,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.293,
                "expected_assists": 0.3144,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 23,
                "accurate_pass": 19,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.112,
                "expected_assists": 0.035,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 16,
                "interceptions": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 89,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0411,
                "expected_assists": 0.0101,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 10,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0689,
                "expected_assists": 0.0178,
                "total_shots": 1,
                "total_pass": 17,
                "accurate_pass": 13,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0826,
                "expected_assists": 0.0323,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 16,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 75,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1062,
                "expected_assists": 0.2472,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 26,
                "accurate_pass": 21,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 29,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2937,
                "expected_assists": 0.1141,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 803,
            "combined_rank_score": 390.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 108.0,
            "sofascore_rating": 7.45,
            "sofascore_appearances": 12.0,
            "fifa_rank": 673.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8762,
            "source_file": "data/player_rankings.csv",
            "player_name": "Harvey Barnes",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Khurshid Giyosov",
                  "ranking": 798
                },
                {
                  "player_name": "Jeremie Frimpong",
                  "ranking": 799
                },
                {
                  "player_name": "Diego Oyarzún",
                  "ranking": 800
                },
                {
                  "player_name": "Leroy Sané",
                  "ranking": 801
                },
                {
                  "player_name": "Kang-in Lee",
                  "ranking": 802
                }
              ],
              "lower": [
                {
                  "player_name": "Nicola Pérez",
                  "ranking": 804
                },
                {
                  "player_name": "Jun-seo Park",
                  "ranking": 805
                },
                {
                  "player_name": "Chang-woo Park",
                  "ranking": 806
                },
                {
                  "player_name": "Ronan",
                  "ranking": 807
                },
                {
                  "player_name": "Roy Revivo",
                  "ranking": 808
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 42,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 42,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0085,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 179.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.01,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (F_service) evaluated 42 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1563,
                "goals": 0.228,
                "goal_rate": 0.228,
                "shots_on_target": 0.5885,
                "total_shots": 1.8205,
                "expected_assists": 0.114,
                "key_pass": 1.1263,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 21.9136,
                "accurate_pass": 17.6687,
                "duels_won": 3.122,
                "total_long_balls": 0.8973,
                "accurate_long_balls": 0.3827,
                "total_opp_half_passes": 15.7451,
                "accurate_opp_half_passes": 12.2059,
                "crosses_total": 2.2024,
                "crosses_accurate": 0.2454,
                "touches": 37.1196,
                "possession_lost": 10.3176,
                "dispossessed": 0.643,
                "duels_lost": 4.0154,
                "aerial_lost": 0.756,
                "total_contest": 1.5918,
                "won_contest": 0.442,
                "ball_recovery": 3.1059,
                "challenges_lost": 0.6665,
                "fouls": 0.8257,
                "fouls_drawn": 1.4823,
                "assists": 0.3741,
                "assist_rate": 0.3741,
                "interceptions": 0.4292,
                "tackles_won": 0.2436,
                "tackles": 0.4912,
                "clearances": 1.527,
                "blocks": 0.0491,
                "big_chances_created": 0.2281,
                "big_chances_missed": 0.2132,
                "xgot": 0.2302,
                "offsides": 0.018,
                "ball_carries": 14.1884,
                "total_progression": 70.579,
                "progressive_carries": 3.5456,
                "shots_off_target": 1.232
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.139,
                  "totalOppositionHalfPasses": 13.8766,
                  "accurateOppositionHalfPasses": 11.0795,
                  "accuratePass": 15.9472,
                  "totalShots": 1.5884
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15631256997585297,
                    "model_output": 0.1563,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0622
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0523
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.021
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.012
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0096
                        }
                      ],
                      "others": -0.01,
                      "total": 0.1563,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.271994
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.223415
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.106085
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.066233
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.056007
                        }
                      ],
                      "others_margin": -0.061473
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.22797714173793793,
                    "model_output": 0.228,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0916
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0486
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0376
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0179
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0122
                        }
                      ],
                      "others": -0.0262,
                      "total": 0.228,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.371237
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.179597
                        },
                        {
                          "name": "goals",
                          "margin": 0.141862
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.065057
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.046735
                        }
                      ],
                      "others_margin": -0.109357
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5884972810745239,
                    "model_output": 0.5885,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1548
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.06
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0319
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0284
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0132
                        }
                      ],
                      "others": 0.0038,
                      "total": 0.5885,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.253286
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.090665
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051798
                        },
                        {
                          "name": "goals",
                          "margin": -0.048466
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.022868
                        }
                      ],
                      "others_margin": 0.006387
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.820481777191162,
                    "model_output": 1.8205,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.471
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0932
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0515
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0488
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0235
                        }
                      ],
                      "others": -0.0456,
                      "total": 1.8205,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.470994
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.093183
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.051462
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.048849
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.023513
                        }
                      ],
                      "others_margin": -0.045603
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.11395536363124847,
                    "model_output": 0.114,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0098
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.011
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0096
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0058
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0044
                        }
                      ],
                      "others": 0.0207,
                      "total": 0.114,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.14196
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.137885
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.107224
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.062994
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.048551
                        }
                      ],
                      "others_margin": 0.199881
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.12627112865448,
                    "model_output": 1.1263,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.199
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0563
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0558
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0536
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0428
                        }
                      ],
                      "others": 0.1304,
                      "total": 1.1263,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.258671
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.062495
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.058326
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.052998
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.042125
                        }
                      ],
                      "others_margin": 0.123106
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.876157283782959,
                    "model_output": 6.8762,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0592
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0185
                        },
                        {
                          "name": "wasFouled",
                          "contribution": 0.0164
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0159
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0133
                        }
                      ],
                      "others": 0.0225,
                      "total": 6.8762,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.059196
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.018482
                        },
                        {
                          "name": "wasFouled",
                          "margin": 0.016424
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.015875
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.013345
                        }
                      ],
                      "others_margin": 0.022425
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 24,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0085, quality 0.770)",
              "stats": {
                "expected_goals": 0.1576,
                "goals": 0.2299,
                "goal_rate": 0.2299,
                "shots_on_target": 0.5935,
                "total_shots": 1.836,
                "expected_assists": 0.1149,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2211,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8327,
                "fouls_drawn": 1.4949,
                "assists": 0.3773,
                "assist_rate": 0.3773,
                "interceptions": 0.4328,
                "tackles_won": 0.2457,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.215,
                "xgot": 0.2322,
                "offsides": 0.0182,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2425
              },
              "params": {
                "market_value_eur": 38000000,
                "quality_factor": 0.7699,
                "boost_factor": 1.0085,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0092)",
              "stats": {
                "expected_goals": 0.1576,
                "goals": 0.2278,
                "goal_rate": 0.2278,
                "shots_on_target": 0.588,
                "total_shots": 1.8279,
                "expected_assists": 0.1149,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assists": 0.3738,
                "assist_rate": 0.3738,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.215,
                "xgot": 0.2322,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2425
              },
              "params": {
                "blend_weight": 0.0092,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9444,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.836,
                  "after": 1.8279
                },
                {
                  "stat": "totalCross",
                  "before": 2.2211,
                  "after": 2.2137
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5935,
                  "after": 0.588
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1576,
                "goals": 0.2278,
                "goal_rate": 0.2278,
                "shots_on_target": 0.588,
                "total_shots": 1.8305,
                "expected_assists": 0.1149,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assists": 0.3738,
                "assist_rate": 0.3738,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.215,
                "xgot": 0.2322,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2425
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.1586,
                "goals": 0.2292,
                "goal_rate": 0.2292,
                "shots_on_target": 0.5916,
                "total_shots": 1.8418,
                "expected_assists": 0.1149,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assists": 0.3738,
                "assist_rate": 0.3738,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.2163,
                "xgot": 0.2336,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2502,
                "duel_xg_multiplier": 1.0062,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.204,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Axel Disasi, Chris Richards",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.204,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0062,
                  "skill_edge": 0.0362,
                  "height_edge": -0.032,
                  "attacker_skill": 0.7699,
                  "defender_skill": 0.6893,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Axel Disasi",
                      "market_value": 15500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6376
                    },
                    {
                      "player": "Chris Richards",
                      "market_value": 25000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7411
                    }
                  ],
                  "xg_override": 0.1586
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.8305,
                  "after": 1.8418
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2425,
                  "after": 1.2502
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1586,
                "goal_rate": 0.2292,
                "goals": 0,
                "shots_on_target": 0.5916,
                "total_shots": 1.8418,
                "expected_assists": 0.1149,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assist_rate": 0.3738,
                "assists": 0,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.2163,
                "xgot": 0.2336,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2502,
                "duel_xg_multiplier": 1.0062,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.204,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1974,
                "goal_rate": 0.2292,
                "goals": 0,
                "shots_on_target": 0.5916,
                "total_shots": 1.8418,
                "expected_assists": 0.1803,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assist_rate": 0.3738,
                "assists": 0,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.2163,
                "xgot": 0.2907,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2502,
                "duel_xg_multiplier": 1.0062,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.204,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1586,
                  "after": 0.1974
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1149,
                  "after": 0.1803
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 80.0)",
              "stats": {
                "expected_goals": 0.1974,
                "goal_rate": 0.2292,
                "goals": 0,
                "shots_on_target": 0.5916,
                "total_shots": 1.8418,
                "expected_assists": 0.1803,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assist_rate": 0.3738,
                "assists": 0,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.2163,
                "xgot": 0.2907,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2502,
                "duel_xg_multiplier": 1.0062,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.204,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 803,
                "fifa_rank": 673.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1974,
                "goal_rate": 0.2292,
                "goals": 0,
                "shots_on_target": 0.5916,
                "total_shots": 1.8418,
                "expected_assists": 0.1803,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assist_rate": 0.3738,
                "assists": 0,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.2163,
                "xgot": 0.2907,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2502,
                "duel_xg_multiplier": 1.0062,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.204,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1791,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.1791,
                "goal_rate": 0.2292,
                "scorer_weight": 0.2467,
                "squad_weight_total": 1.813,
                "weight_share": 0.1361,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.1974,
                "goal_rate": 0.2292,
                "goals": 0,
                "shots_on_target": 0.5916,
                "total_shots": 1.8418,
                "expected_assists": 0.1803,
                "key_pass": 1.1358,
                "rating": 6.8762,
                "minutes": 85.0,
                "total_pass": 22.0999,
                "accurate_pass": 17.8189,
                "duels_won": 3.1485,
                "total_long_balls": 0.9049,
                "accurate_long_balls": 0.386,
                "total_opp_half_passes": 15.8789,
                "accurate_opp_half_passes": 12.3097,
                "crosses_total": 2.2137,
                "crosses_accurate": 0.2475,
                "touches": 37.4351,
                "possession_lost": 10.4053,
                "dispossessed": 0.6485,
                "duels_lost": 4.0495,
                "aerial_lost": 0.7624,
                "total_contest": 1.6053,
                "won_contest": 0.4458,
                "ball_recovery": 3.1323,
                "challenges_lost": 0.6722,
                "fouls": 0.8337,
                "fouls_drawn": 1.4985,
                "assist_rate": 0.3738,
                "assists": 1,
                "interceptions": 0.4288,
                "tackles_won": 0.2478,
                "tackles": 0.4954,
                "clearances": 1.54,
                "blocks": 0.0495,
                "big_chances_created": 0.23,
                "big_chances_missed": 0.2163,
                "xgot": 0.2907,
                "offsides": 0.018,
                "ball_carries": 14.309,
                "total_progression": 71.1789,
                "progressive_carries": 3.5757,
                "shots_off_target": 1.2502,
                "duel_xg_multiplier": 1.0062,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.204,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1791,
                "projected_assists": 1,
                "assist_probability": 0.165,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.165,
                "assist_rate": 0.3738,
                "provider_weight": 0.2254,
                "squad_weight_total": 1.1691,
                "weight_share": 0.1928,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Matías Fernández-Pardo": {
          "player_id": 1149144,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 20,
          "height": 183,
          "market_value": 60000000,
          "stats": {
            "expected_goals": 0.1722,
            "goal_rate": 0.1204,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0797,
            "key_pass": 1,
            "rating": 6.6785,
            "minutes": 73,
            "total_pass": 11,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 5.6779,
            "dispossessed": 0.3519,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 1,
            "ball_carries": 6,
            "total_progression": 26,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0727,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.249,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Axel Disasi, Chris Richards",
            "opponent_faced": "Axel Disasi, Chris Richards",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1582,
            "projected_assists": 0,
            "assist_probability": 0.0766,
            "finishing_factor": 0.9045,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 56,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0169,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "tackles": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4911,
                "expected_assists": 0.2066,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 19,
                "key_pass": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 74,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.048,
                "expected_assists": 0.0026,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 58,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 27,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 4,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1472,
            "combined_rank_score": 607.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 1153.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6785,
            "source_file": "data/player_rankings.csv",
            "player_name": "Matías Fernández-Pardo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Andrey Santos",
                  "ranking": 1467
                },
                {
                  "player_name": "Miloš Kerkez",
                  "ranking": 1468
                },
                {
                  "player_name": "Misael Llantén",
                  "ranking": 1469
                },
                {
                  "player_name": "Gabriel Graciani",
                  "ranking": 1470
                },
                {
                  "player_name": "Hyeong-won Kim",
                  "ranking": 1471
                }
              ],
              "lower": [
                {
                  "player_name": "Vitaly Janelt",
                  "ranking": 1473
                },
                {
                  "player_name": "Nick Pope",
                  "ranking": 1474
                },
                {
                  "player_name": "Rae-jun Lee",
                  "ranking": 1475
                },
                {
                  "player_name": "Javokhir Khusanov",
                  "ranking": 1476
                },
                {
                  "player_name": "Shukhrat Mukhammadiev",
                  "ranking": 1477
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0652,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 3 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1211,
                "goals": 0.1054,
                "goal_rate": 0.1054,
                "shots_on_target": 0.4489,
                "total_shots": 1.3677,
                "expected_assists": 0.0477,
                "key_pass": 0.6063,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 9.9261,
                "accurate_pass": 6.8766,
                "duels_won": 1.9417,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.4383,
                "accurate_opp_half_passes": 3.7192,
                "crosses_total": 0.6113,
                "crosses_accurate": 0.0,
                "touches": 16.0991,
                "possession_lost": 5.3304,
                "dispossessed": 0.3304,
                "duels_lost": 2.4966,
                "aerial_lost": 0.7775,
                "total_contest": 0.2809,
                "won_contest": 0.2809,
                "ball_recovery": 1.0,
                "challenges_lost": 0.7775,
                "fouls": 0.6113,
                "fouls_drawn": 0.6113,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.7191,
                "tackles": 0.7191,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.7191,
                "ball_carries": 5.2809,
                "total_progression": 24.2737,
                "progressive_carries": 1.2809,
                "shots_off_target": 0.9188
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0187,
                  "totalOppositionHalfPasses": 6.4383,
                  "accurateOppositionHalfPasses": 3.7191,
                  "accuratePass": 6.8766,
                  "totalShots": 0.3887
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12113746255636215,
                    "model_output": 0.1211,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0475
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0443
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0299
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0202
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0091
                        }
                      ],
                      "others": -0.0337,
                      "total": 0.1211,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.272476
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.256676
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.165595
                        },
                        {
                          "name": "goals",
                          "margin": -0.129508
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.060768
                        }
                      ],
                      "others_margin": -0.246016
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.10537244379520416,
                    "model_output": 0.1054,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0483
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0404
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0296
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0242
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0267,
                      "total": 0.1054,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.270888
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.231307
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.163625
                        },
                        {
                          "name": "goals",
                          "margin": -0.157589
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.072063
                        }
                      ],
                      "others_margin": -0.226531
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.44888749718666077,
                    "model_output": 0.4489,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1425
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0735
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0633
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0497
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.04
                        }
                      ],
                      "others": -0.0041,
                      "total": 0.4489,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.235306
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.114464
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.110376
                        },
                        {
                          "name": "goals",
                          "margin": -0.096001
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.084542
                        }
                      ],
                      "others_margin": -0.009111
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.3677127361297607,
                    "model_output": 1.3677,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4057
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1776
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0853
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0719
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.047
                        }
                      ],
                      "others": -0.1787,
                      "total": 1.3677,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.40566
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.177553
                        },
                        {
                          "name": "goals",
                          "margin": -0.085295
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.071929
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.046962
                        }
                      ],
                      "others_margin": -0.178773
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04773449897766113,
                    "model_output": 0.0477,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.015
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0127
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0052
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0047
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0029
                        }
                      ],
                      "others": -0.0073,
                      "total": 0.0477,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.265081
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.229571
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.087722
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.086104
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.053803
                        }
                      ],
                      "others_margin": -0.142113
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6063263416290283,
                    "model_output": 0.6063,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2143
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0513
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0394
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0303
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0249
                        }
                      ],
                      "others": -0.1361,
                      "total": 0.6063,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.276047
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.059541
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.048224
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.038744
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.032965
                        }
                      ],
                      "others_margin": -0.20235
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.678520679473877,
                    "model_output": 6.6785,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0465
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0241
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0227
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0152
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0142
                        }
                      ],
                      "others": -0.054,
                      "total": 6.6785,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.046475
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.024106
                        },
                        {
                          "name": "rating",
                          "margin": -0.022692
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.015177
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.014236
                        }
                      ],
                      "others_margin": -0.053905
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 3,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0652, quality 0.853)",
              "stats": {
                "expected_goals": 0.129,
                "goals": 0.1122,
                "goal_rate": 0.1122,
                "shots_on_target": 0.4782,
                "total_shots": 1.4569,
                "expected_assists": 0.0508,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 0.9787
              },
              "params": {
                "market_value_eur": 60000000,
                "quality_factor": 0.8526,
                "boost_factor": 1.0652,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.129,
                "goals": 0.1122,
                "goal_rate": 0.1122,
                "shots_on_target": 0.4782,
                "total_shots": 1.4569,
                "expected_assists": 0.0508,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 0.9787
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.1384,
                "goals": 0.1204,
                "goal_rate": 0.1204,
                "shots_on_target": 0.513,
                "total_shots": 1.5629,
                "expected_assists": 0.0508,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 1.0499,
                "duel_xg_multiplier": 1.0727,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Axel Disasi, Chris Richards",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.249,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0727,
                  "skill_edge": 0.0735,
                  "height_edge": -0.024,
                  "attacker_skill": 0.8526,
                  "defender_skill": 0.6893,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Axel Disasi",
                      "market_value": 15500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6376
                    },
                    {
                      "player": "Chris Richards",
                      "market_value": 25000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7411
                    }
                  ],
                  "xg_override": 0.1384
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.4569,
                  "after": 1.5629
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9787,
                  "after": 1.0499
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4782,
                  "after": 0.513
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.129,
                  "after": 0.1384
                },
                {
                  "stat": "goals",
                  "before": 0.1122,
                  "after": 0.1204
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1384,
                "goal_rate": 0.1204,
                "goals": 0,
                "shots_on_target": 0.513,
                "total_shots": 1.5629,
                "expected_assists": 0.0508,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 1.0499,
                "duel_xg_multiplier": 1.0727,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1722,
                "goal_rate": 0.1204,
                "goals": 0,
                "shots_on_target": 0.513,
                "total_shots": 1.5629,
                "expected_assists": 0.0797,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 1.0499,
                "duel_xg_multiplier": 1.0727,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9045,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1384,
                  "after": 0.1722
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0508,
                  "after": 0.0797
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.1722,
                "goal_rate": 0.1204,
                "goals": 0,
                "shots_on_target": 0.513,
                "total_shots": 1.5629,
                "expected_assists": 0.0797,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 1.0499,
                "duel_xg_multiplier": 1.0727,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9045,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1472,
                "fifa_rank": 1153.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1722,
                "goal_rate": 0.1204,
                "goals": 0,
                "shots_on_target": 0.513,
                "total_shots": 1.5629,
                "expected_assists": 0.0797,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 1.0499,
                "duel_xg_multiplier": 1.0727,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1582,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9045,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.1582,
                "goal_rate": 0.1204,
                "scorer_weight": 0.1558,
                "squad_weight_total": 1.813,
                "weight_share": 0.0859,
                "finishing_factor": 0.9045,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.1722,
                "goal_rate": 0.1204,
                "goals": 0,
                "shots_on_target": 0.513,
                "total_shots": 1.5629,
                "expected_assists": 0.0797,
                "key_pass": 0.6459,
                "rating": 6.6785,
                "minutes": 73.32,
                "total_pass": 10.5733,
                "accurate_pass": 7.325,
                "duels_won": 2.0683,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 6.8581,
                "accurate_opp_half_passes": 3.9617,
                "crosses_total": 0.6512,
                "crosses_accurate": 0.0,
                "touches": 17.1488,
                "possession_lost": 5.6779,
                "dispossessed": 0.3519,
                "duels_lost": 2.6594,
                "aerial_lost": 0.8282,
                "total_contest": 0.2992,
                "won_contest": 0.2992,
                "ball_recovery": 1.0652,
                "challenges_lost": 0.8282,
                "fouls": 0.6512,
                "fouls_drawn": 0.6512,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.766,
                "tackles": 0.766,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.766,
                "ball_carries": 5.6252,
                "total_progression": 25.8563,
                "progressive_carries": 1.3644,
                "shots_off_target": 1.0499,
                "duel_xg_multiplier": 1.0727,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1582,
                "projected_assists": 0,
                "assist_probability": 0.0766,
                "finishing_factor": 0.9045,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0766,
                "assist_rate": 0.0,
                "provider_weight": 0.0638,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0545,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Joelinton": {
          "player_id": 560128,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 7,
          "height": 186,
          "market_value": 21000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0901,
            "assist_rate": 0.0677,
            "assists": 0,
            "expected_goals": 0.0988,
            "goal_rate": 0.0888,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8454,
            "minutes": 85,
            "total_pass": 38,
            "accurate_pass": 31,
            "duels_won": 7,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 17,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 54,
            "possession_lost": 11.0994,
            "dispossessed": 1.4286,
            "duels_lost": 7,
            "aerial_won": 1,
            "aerial_lost": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1329,
            "ball_carries": 14,
            "total_progression": 47,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9786,
            "dribbles_attempted": 4,
            "dribbles_successful": 1.4,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.405,
            "pressing_faced": "LOW",
            "matchup_zone": "LW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "Axel Disasi",
            "opponent_faced": "Axel Disasi",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0941,
            "projected_assists": 0,
            "assist_probability": 0.0862,
            "finishing_factor": 1.0726,
            "creation_factor": 1.0959,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 89,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0579,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 34,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 31,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0128,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 19,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0952,
                "expected_assists": 0.1854,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 50,
                "accurate_pass": 42,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 8,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1724,
                "expected_assists": 0.0063,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023999,
              "match_date": "2026-04-12",
              "home_team": "Crystal Palace",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 84,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0083,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 22,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0456,
                "expected_assists": 0.0113,
                "total_shots": 1,
                "total_pass": 36,
                "accurate_pass": 30,
                "tackles": 2,
                "interceptions": 4,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023990,
              "match_date": "2026-03-14",
              "home_team": "Chelsea",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 23,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023983,
              "match_date": "2026-03-04",
              "home_team": "Newcastle United",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1197,
                "expected_assists": 0.0409,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 55,
                "accurate_pass": 37,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 7,
                "duels_won": 12,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023977,
              "match_date": "2026-02-28",
              "home_team": "Newcastle United",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1437,
                "expected_assists": 0.1094,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 42,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024010,
              "match_date": "2026-02-21",
              "home_team": "Manchester City",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0336,
                "expected_assists": 0.0058,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "aerial_won": 4,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1539,
            "combined_rank_score": 627.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 587.0,
            "sofascore_rating": 6.7926,
            "sofascore_appearances": 27.0,
            "fifa_rank": 667.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8454,
            "source_file": "data/player_rankings.csv",
            "player_name": "Joelinton",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kota Mizunuma",
                  "ranking": 1534
                },
                {
                  "player_name": "César Pinares",
                  "ranking": 1535
                },
                {
                  "player_name": "Ivan Šunjić",
                  "ranking": 1536
                },
                {
                  "player_name": "Myles Lewis-Skelly",
                  "ranking": 1537
                },
                {
                  "player_name": "Raoul Bellanova",
                  "ranking": 1538
                }
              ],
              "lower": [
                {
                  "player_name": "Edin Džeko",
                  "ranking": 1540
                },
                {
                  "player_name": "Leander Dendoncker",
                  "ranking": 1541
                },
                {
                  "player_name": "Yeong-jun Choi",
                  "ranking": 1542
                },
                {
                  "player_name": "Nam Ha",
                  "ranking": 1543
                },
                {
                  "player_name": "Alisher Salimov",
                  "ranking": 1544
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 27,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 27,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0064,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 27 historical appearances across 8 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.701,
                "expected_assists": 0.0571,
                "assists": 0.0673,
                "assist_rate": 0.0673,
                "expected_goals": 0.0806,
                "goals": 0.0901,
                "goal_rate": 0.0901,
                "shots_on_target": 0.2925,
                "total_shots": 1.2036,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.3887,
                "accurate_pass": 30.7282,
                "duels_won": 6.6301,
                "total_long_balls": 1.7088,
                "accurate_long_balls": 1.1364,
                "total_own_half_passes": 16.0787,
                "accurate_own_half_passes": 13.9524,
                "total_opp_half_passes": 21.31,
                "accurate_opp_half_passes": 16.7759,
                "crosses_total": 0.447,
                "crosses_accurate": 0.1174,
                "touches": 53.406,
                "possession_lost": 11.0288,
                "dispossessed": 1.4195,
                "duels_lost": 7.2868,
                "aerial_won": 2.7674,
                "aerial_lost": 2.3622,
                "interceptions": 1.4276,
                "tackles_won": 1.3697,
                "tackles": 1.9602,
                "clearances": 1.4752,
                "total_contest": 2.2314,
                "won_contest": 1.2669,
                "challenges_lost": 0.7423,
                "fouls": 2.3079,
                "fouls_drawn": 0.6356,
                "blocks": 0.054,
                "big_chances_created": 0.099,
                "big_chances_missed": 0.0089,
                "xgot": 0.1084,
                "ball_carries": 14.0336,
                "total_progression": 46.5129,
                "progressive_carries": 1.025,
                "shots_off_target": 0.9111
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1519,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1291,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Crystal Palace",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1097,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0933,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Chelsea",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0793,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-04",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0674,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0573,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-02-21",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0487,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-01-25",
                    "opponent": "Aston Villa",
                    "minutes": 48.0,
                    "is_starting": true,
                    "weight": 0.0414,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-01-18",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0352,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.3567,
                  "creative_index": 0.291,
                  "expectedGoals": 0.0939,
                  "expectedAssists": 0.0541,
                  "onTargetScoringAttempt": 0.3843
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7010012269020081,
                    "model_output": 0.701,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1008
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0789
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0678
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0376
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0343
                        }
                      ],
                      "others": -0.0674,
                      "total": 0.701,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.107762
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.083301
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.07761
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.045824
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.043607
                        }
                      ],
                      "others_margin": -0.09185
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05706150829792023,
                    "model_output": 0.0571,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.017
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0089
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0061
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0026
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0098,
                      "total": 0.0571,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.221187
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121604
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.08234
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.036341
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.030607
                        }
                      ],
                      "others_margin": -0.158708
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06725922226905823,
                    "model_output": 0.0673,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0094
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0063
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0058
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0027
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0019
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.0673,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.116907
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.079801
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.073887
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.036561
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.026556
                        }
                      ],
                      "others_margin": -0.062686
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08062152564525604,
                    "model_output": 0.0806,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0165
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.01
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0076
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0058
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": -0.0055
                        }
                      ],
                      "others": 0.0,
                      "total": 0.0806,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.191977
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.120287
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.090583
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.06971
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": -0.065574
                        }
                      ],
                      "others_margin": 6.5e-05
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.0900932177901268,
                    "model_output": 0.0901,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0194
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0159
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0118
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.008
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0073
                        }
                      ],
                      "others": -0.0145,
                      "total": 0.0901,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.181559
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.146029
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.124016
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.085887
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.072433
                        }
                      ],
                      "others_margin": -0.150329
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.29250672459602356,
                    "model_output": 0.2925,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.066
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0551
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0441
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0216
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": -0.0173
                        }
                      ],
                      "others": -0.0476,
                      "total": 0.2925,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.185354
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.152264
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.123682
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.058717
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": -0.049653
                        }
                      ],
                      "others_margin": -0.150629
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.203561544418335,
                    "model_output": 1.2036,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.2399
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1454
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0853
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0464
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0399
                        }
                      ],
                      "others": -0.0804,
                      "total": 1.2036,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.239873
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.145384
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.085335
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.046358
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.039891
                        }
                      ],
                      "others_margin": -0.080357
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.845402240753174,
                    "model_output": 6.8454,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.033
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0253
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0177
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0107
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0067
                        }
                      ],
                      "others": -0.0115,
                      "total": 6.8454,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.033002
                        },
                        {
                          "name": "rating",
                          "margin": -0.025344
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.017716
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.010687
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.006652
                        }
                      ],
                      "others_margin": -0.011505
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 27,
                  "role_matches": 23,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0064, quality 0.641)",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0574,
                "assists": 0.0677,
                "assist_rate": 0.0677,
                "expected_goals": 0.0811,
                "goals": 0.0907,
                "goal_rate": 0.0907,
                "shots_on_target": 0.2944,
                "total_shots": 1.2113,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 2.7851,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.009,
                "xgot": 0.1091,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.9169
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0064,
                "reference_quality": 0.505,
                "history_matches": 27,
                "history_shrink": 0.1562,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0574,
                "assists": 0.0677,
                "assist_rate": 0.0677,
                "expected_goals": 0.0811,
                "goals": 0.0907,
                "goal_rate": 0.0907,
                "shots_on_target": 0.2944,
                "total_shots": 1.2113,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 2.7851,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.009,
                "xgot": 0.1091,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.9169
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0574,
                "assists": 0.0677,
                "assist_rate": 0.0677,
                "expected_goals": 0.0794,
                "goals": 0.0888,
                "goal_rate": 0.0888,
                "shots_on_target": 0.2881,
                "total_shots": 1.1854,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 1.2,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.0088,
                "xgot": 0.1068,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.8973,
                "duel_xg_multiplier": 0.9786,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.405,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Axel Disasi",
                "opponent_faced": "Axel Disasi",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Axel Disasi",
                  "matchup_zone": "LW vs CB",
                  "duel_win_rate": 0.405,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9786,
                  "skill_edge": 0.0014,
                  "height_edge": -0.016,
                  "attacker_skill": 0.6408,
                  "defender_skill": 0.6376,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Axel Disasi",
                      "market_value": 15500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6376
                    }
                  ],
                  "xg_override": 0.0794
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 2.7851,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 1.2113,
                  "after": 1.1854
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9169,
                  "after": 0.8973
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2944,
                  "after": 0.2881
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0574,
                "assist_rate": 0.0677,
                "assists": 0,
                "expected_goals": 0.0794,
                "goal_rate": 0.0888,
                "goals": 0,
                "shots_on_target": 0.2881,
                "total_shots": 1.1854,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 1.2,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.0088,
                "xgot": 0.1068,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.8973,
                "duel_xg_multiplier": 0.9786,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.405,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Axel Disasi",
                "opponent_faced": "Axel Disasi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0901,
                "assist_rate": 0.0677,
                "assists": 0,
                "expected_goals": 0.0988,
                "goal_rate": 0.0888,
                "goals": 0,
                "shots_on_target": 0.2881,
                "total_shots": 1.1854,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 1.2,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.0088,
                "xgot": 0.1329,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.8973,
                "duel_xg_multiplier": 0.9786,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.405,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Axel Disasi",
                "opponent_faced": "Axel Disasi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0726,
                "creation_factor": 1.0959
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0794,
                  "after": 0.0988
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0574,
                  "after": 0.0901
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 80.0)",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0901,
                "assist_rate": 0.0677,
                "assists": 0,
                "expected_goals": 0.0988,
                "goal_rate": 0.0888,
                "goals": 0,
                "shots_on_target": 0.2881,
                "total_shots": 1.1854,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 1.2,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.0088,
                "xgot": 0.1329,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.8973,
                "duel_xg_multiplier": 0.9786,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.405,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Axel Disasi",
                "opponent_faced": "Axel Disasi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0726,
                "creation_factor": 1.0959,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1539,
                "fifa_rank": 667.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0901,
                "assist_rate": 0.0677,
                "assists": 0,
                "expected_goals": 0.0988,
                "goal_rate": 0.0888,
                "goals": 0,
                "shots_on_target": 0.2881,
                "total_shots": 1.1854,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 1.2,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.0088,
                "xgot": 0.1329,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.8973,
                "duel_xg_multiplier": 0.9786,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.405,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Axel Disasi",
                "opponent_faced": "Axel Disasi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0941,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0726,
                "creation_factor": 1.0959,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0941,
                "goal_rate": 0.0888,
                "scorer_weight": 0.106,
                "squad_weight_total": 1.813,
                "weight_share": 0.0585,
                "finishing_factor": 1.0726,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.7055,
                "expected_assists": 0.0901,
                "assist_rate": 0.0677,
                "assists": 0,
                "expected_goals": 0.0988,
                "goal_rate": 0.0888,
                "goals": 0,
                "shots_on_target": 0.2881,
                "total_shots": 1.1854,
                "rating": 6.8454,
                "minutes": 85.2,
                "total_pass": 37.628,
                "accurate_pass": 30.9249,
                "duels_won": 6.6725,
                "total_long_balls": 1.7197,
                "accurate_long_balls": 1.1437,
                "total_own_half_passes": 16.1816,
                "accurate_own_half_passes": 14.0417,
                "total_opp_half_passes": 21.4464,
                "accurate_opp_half_passes": 16.8833,
                "crosses_total": 0.4499,
                "crosses_accurate": 0.1182,
                "touches": 53.7478,
                "possession_lost": 11.0994,
                "dispossessed": 1.4286,
                "duels_lost": 7.3334,
                "aerial_won": 1.2,
                "aerial_lost": 2.3773,
                "interceptions": 1.4367,
                "tackles_won": 1.3785,
                "tackles": 1.9727,
                "clearances": 1.4846,
                "total_contest": 2.2457,
                "won_contest": 1.275,
                "challenges_lost": 0.7471,
                "fouls": 2.3227,
                "fouls_drawn": 0.6397,
                "blocks": 0.0543,
                "big_chances_created": 0.0996,
                "big_chances_missed": 0.0088,
                "xgot": 0.1329,
                "ball_carries": 14.1234,
                "total_progression": 46.8106,
                "progressive_carries": 1.0316,
                "shots_off_target": 0.8973,
                "duel_xg_multiplier": 0.9786,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.405,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Axel Disasi",
                "opponent_faced": "Axel Disasi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0941,
                "projected_assists": 0,
                "assist_probability": 0.0862,
                "finishing_factor": 1.0726,
                "creation_factor": 1.0959,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0862,
                "assist_rate": 0.0677,
                "provider_weight": 0.0987,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0845,
                "creation_factor": 1.0959,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Nico González": {
          "player_id": 954056,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 6,
          "height": 186,
          "market_value": 54000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0774,
            "assist_rate": 0.056,
            "assists": 0,
            "expected_goals": 0.0413,
            "goal_rate": 0.0378,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9063,
            "minutes": 69,
            "total_pass": 53,
            "accurate_pass": 48,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 23,
            "accurate_own_half_passes": 21,
            "total_opp_half_passes": 30,
            "accurate_opp_half_passes": 27,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 62,
            "possession_lost": 6.8772,
            "dispossessed": 0.7492,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0066,
            "ball_carries": 18,
            "total_progression": 34,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
            "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0405,
            "projected_assists": 0,
            "assist_probability": 0.0745,
            "finishing_factor": 1.0553,
            "creation_factor": 1.0675,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0517,
                "expected_assists": 0.0638,
                "total_shots": 2,
                "total_pass": 68,
                "accurate_pass": 58,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.2242,
                "total_shots": 0,
                "total_pass": 73,
                "accurate_pass": 62,
                "key_pass": 6,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 77,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0126,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 43,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 71,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1972,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 48,
                "key_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023961,
              "match_date": "2026-05-24",
              "home_team": "Manchester City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Manchester City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1012,
                "expected_assists": 0.0655,
                "total_shots": 1,
                "total_pass": 72,
                "accurate_pass": 68,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Manchester City",
              "opponent": "Everton",
              "stats": {
                "minutes": 75,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0266,
                "total_shots": 0,
                "total_pass": 59,
                "accurate_pass": 57,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024003,
              "match_date": "2026-04-22",
              "home_team": "Burnley",
              "away_team": "Manchester City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Burnley",
              "stats": {
                "minutes": 25,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0248,
                "expected_assists": 0.023,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 28,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025039,
              "match_date": "2026-04-19",
              "home_team": "Manchester City",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 10,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025212,
              "match_date": "2026-02-11",
              "home_team": "Manchester City",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Fulham",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 960,
            "combined_rank_score": 444.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 372.0,
            "sofascore_rating": 6.968,
            "sofascore_appearances": 25.0,
            "fifa_rank": 517.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9063,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nico González",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Moussa Diaby",
                  "ranking": 955
                },
                {
                  "player_name": "Eduardo Camavinga",
                  "ranking": 956
                },
                {
                  "player_name": "Giuliano Simeone",
                  "ranking": 957
                },
                {
                  "player_name": "Gerónimo Rulli",
                  "ranking": 958
                },
                {
                  "player_name": "Mohamed Simakan",
                  "ranking": 959
                }
              ],
              "lower": [
                {
                  "player_name": "Gonçalo Guedes",
                  "ranking": 961
                },
                {
                  "player_name": "Samuel Klein",
                  "ranking": 962
                },
                {
                  "player_name": "Dani Ceballos",
                  "ranking": 963
                },
                {
                  "player_name": "Han-been Yang",
                  "ranking": 964
                },
                {
                  "player_name": "Alexsey Kozlov",
                  "ranking": 965
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 28,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 28,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0151,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 28 historical appearances across 8 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.6778,
                "expected_assists": 0.0486,
                "assists": 0.0552,
                "assist_rate": 0.0552,
                "expected_goals": 0.0327,
                "goals": 0.0372,
                "goal_rate": 0.0372,
                "shots_on_target": 0.1573,
                "total_shots": 0.6042,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 52.3814,
                "accurate_pass": 47.4498,
                "duels_won": 3.1286,
                "total_long_balls": 3.3677,
                "accurate_long_balls": 1.9744,
                "total_own_half_passes": 22.371,
                "accurate_own_half_passes": 20.7788,
                "total_opp_half_passes": 30.0104,
                "accurate_opp_half_passes": 26.671,
                "crosses_total": 0.3011,
                "crosses_accurate": 0.0425,
                "touches": 61.2514,
                "possession_lost": 6.7749,
                "dispossessed": 0.7381,
                "duels_lost": 4.6098,
                "aerial_won": 0.8909,
                "aerial_lost": 0.8758,
                "interceptions": 0.9569,
                "tackles_won": 0.6622,
                "tackles": 1.1351,
                "clearances": 1.124,
                "total_contest": 0.5241,
                "won_contest": 0.395,
                "challenges_lost": 1.1542,
                "fouls": 1.8135,
                "fouls_drawn": 0.7076,
                "blocks": 0.258,
                "big_chances_created": 0.0098,
                "big_chances_missed": 0.0,
                "xgot": 0.0052,
                "ball_carries": 17.7792,
                "total_progression": 33.517,
                "progressive_carries": 0.2594,
                "shots_off_target": 0.4469
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 19.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Everton",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "Burnley",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0673,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Arsenal",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0572,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-11",
                    "opponent": "Fulham",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0486,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-02-01",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0413,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-01-07",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.2943,
                  "creative_index": 0.3,
                  "expectedGoals": 0.0176,
                  "expectedAssists": 0.0481,
                  "onTargetScoringAttempt": 0.0194
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6778075695037842,
                    "model_output": 0.6778,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0996
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0979
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.075
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0339
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.027
                        }
                      ],
                      "others": -0.0708,
                      "total": 0.6778,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.119177
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117354
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.088593
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.042783
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.035437
                        }
                      ],
                      "others_margin": -0.09944
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.048569150269031525,
                    "model_output": 0.0486,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0182
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0097
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0052
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0039
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.0162,
                      "total": 0.0486,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.238573
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.134401
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.069765
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.055678
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.051069
                        }
                      ],
                      "others_margin": -0.288036
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.055210839956998825,
                    "model_output": 0.0552,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0105
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0077
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0064
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0041
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0131,
                      "total": 0.0552,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.13164
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.097685
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.081352
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.055136
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.05068
                        }
                      ],
                      "others_margin": -0.213069
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03273077309131622,
                    "model_output": 0.0327,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0365
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0101
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.008
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0067
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.012,
                      "total": 0.0327,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.488073
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.191076
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.154441
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.128508
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.094128
                        }
                      ],
                      "others_margin": -0.312179
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.037229273468256,
                    "model_output": 0.0372,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0279
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0152
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0062
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0053
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0135,
                      "total": 0.0372,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.336452
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.245423
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.107661
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.090576
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.089424
                        }
                      ],
                      "others_margin": -0.310033
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.15726955235004425,
                    "model_output": 0.1573,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0897
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0393
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0273
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0199
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.012
                        }
                      ],
                      "others": -0.0331,
                      "total": 0.1573,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.323996
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.18368
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.130964
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.09371
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.061119
                        }
                      ],
                      "others_margin": -0.191214
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6041289567947388,
                    "model_output": 0.6041,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2493
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1186
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0606
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.049
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0409
                        }
                      ],
                      "others": -0.1052,
                      "total": 0.6041,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.249312
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118628
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.060616
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.04897
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.040929
                        }
                      ],
                      "others_margin": -0.105136
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.90628719329834,
                    "model_output": 6.9063,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0825
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0331
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0331
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0174
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0164
                        }
                      ],
                      "others": -0.0261,
                      "total": 6.9063,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.082478
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.03315
                        },
                        {
                          "name": "rating",
                          "margin": -0.033072
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.017363
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016382
                        }
                      ],
                      "others_margin": -0.026119
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 28,
                  "role_matches": 20,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0151, quality 0.837)",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0493,
                "assists": 0.056,
                "assist_rate": 0.056,
                "expected_goals": 0.0332,
                "goals": 0.0378,
                "goal_rate": 0.0378,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0053,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536
              },
              "params": {
                "market_value_eur": 54000000,
                "quality_factor": 0.837,
                "boost_factor": 1.0151,
                "reference_quality": 0.505,
                "history_matches": 28,
                "history_shrink": 0.1515,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0493,
                "assists": 0.056,
                "assist_rate": 0.056,
                "expected_goals": 0.0332,
                "goals": 0.0378,
                "goal_rate": 0.0378,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0053,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0493,
                "assists": 0.056,
                "assist_rate": 0.056,
                "expected_goals": 0.0332,
                "goals": 0.0378,
                "goal_rate": 0.0378,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0053,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536,
                "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "antagonist_source": "defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
                  "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0493,
                "assist_rate": 0.056,
                "assists": 0,
                "expected_goals": 0.0332,
                "goal_rate": 0.0378,
                "goals": 0,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0053,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536,
                "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0774,
                "assist_rate": 0.056,
                "assists": 0,
                "expected_goals": 0.0413,
                "goal_rate": 0.0378,
                "goals": 0,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0066,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536,
                "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0553,
                "creation_factor": 1.0675
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0332,
                  "after": 0.0413
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0493,
                  "after": 0.0774
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 81.0)",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0774,
                "assist_rate": 0.056,
                "assists": 0,
                "expected_goals": 0.0413,
                "goal_rate": 0.0378,
                "goals": 0,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0066,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536,
                "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0553,
                "creation_factor": 1.0675,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 960,
                "fifa_rank": 517.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0774,
                "assist_rate": 0.056,
                "assists": 0,
                "expected_goals": 0.0413,
                "goal_rate": 0.0378,
                "goals": 0,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0066,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536,
                "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0405,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0553,
                "creation_factor": 1.0675,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0405,
                "goal_rate": 0.0378,
                "scorer_weight": 0.0436,
                "squad_weight_total": 1.813,
                "weight_share": 0.024,
                "finishing_factor": 1.0553,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.688,
                "expected_assists": 0.0774,
                "assist_rate": 0.056,
                "assists": 0,
                "expected_goals": 0.0413,
                "goal_rate": 0.0378,
                "goals": 0,
                "shots_on_target": 0.1596,
                "total_shots": 0.6133,
                "rating": 6.9063,
                "minutes": 69.23,
                "total_pass": 53.1724,
                "accurate_pass": 48.1663,
                "duels_won": 3.1758,
                "total_long_balls": 3.4186,
                "accurate_long_balls": 2.0042,
                "total_own_half_passes": 22.7088,
                "accurate_own_half_passes": 21.0926,
                "total_opp_half_passes": 30.4636,
                "accurate_opp_half_passes": 27.0737,
                "crosses_total": 0.3056,
                "crosses_accurate": 0.0431,
                "touches": 62.1763,
                "possession_lost": 6.8772,
                "dispossessed": 0.7492,
                "duels_lost": 4.6794,
                "aerial_won": 0.9044,
                "aerial_lost": 0.889,
                "interceptions": 0.9713,
                "tackles_won": 0.6722,
                "tackles": 1.1522,
                "clearances": 1.141,
                "total_contest": 0.532,
                "won_contest": 0.401,
                "challenges_lost": 1.1716,
                "fouls": 1.8409,
                "fouls_drawn": 0.7183,
                "blocks": 0.2619,
                "big_chances_created": 0.0099,
                "big_chances_missed": 0.0,
                "xgot": 0.0066,
                "ball_carries": 18.0477,
                "total_progression": 34.0231,
                "progressive_carries": 0.2633,
                "shots_off_target": 0.4536,
                "opponent_faced": "Ismaïla Sarr, Yéremy Pino, Adam Wharton",
                "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0405,
                "projected_assists": 0,
                "assist_probability": 0.0745,
                "finishing_factor": 1.0553,
                "creation_factor": 1.0675,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0745,
                "assist_rate": 0.056,
                "provider_weight": 0.0826,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0707,
                "creation_factor": 1.0675,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Lewis Hall": {
          "player_id": 1136730,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 179,
          "market_value": 52000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 7.0318,
            "minutes": 88,
            "total_pass": 49,
            "accurate_pass": 43,
            "duels_won": 6,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 23,
            "accurate_own_half_passes": 21,
            "total_opp_half_passes": 27,
            "accurate_opp_half_passes": 22,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 82,
            "possession_lost": 15.3079,
            "dispossessed": 1.692,
            "duels_lost": 7,
            "aerial_lost": 2,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 7,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.1693,
            "goals": 0,
            "assist_rate": 0.1118,
            "assists": 0,
            "expected_goals": 0.0683,
            "expected_assists": 0.1867,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0492,
            "ball_carries": 18,
            "total_progression": 75,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 2.3,
            "tackles_won_in_zone": 2.0,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.715,
            "opponent_faced": "Daichi Kamada",
            "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
            "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.066,
            "projected_assists": 0,
            "assist_probability": 0.1703,
            "finishing_factor": 1.25,
            "creation_factor": 0.9574,
            "fifa_overall": 83.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0678,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 29,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0183,
                "expected_assists": 0.041,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 70,
                "accurate_pass": 63,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1921,
                "expected_assists": 0.1088,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 68,
                "accurate_pass": 63,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0209,
                "expected_assists": 0.0132,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 50,
                "accurate_pass": 49,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 89,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0122,
                "expected_assists": 0.0123,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 41,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 13
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 9.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0345,
                "expected_assists": 0.3119,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 37,
                "accurate_pass": 30,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3499,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 3,
                "duels_won": 5,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.021,
                "expected_assists": 0.0967,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 41,
                "accurate_pass": 36,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1381,
                "expected_assists": 0.0324,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 61,
                "accurate_pass": 50,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0752,
                "total_shots": 0,
                "total_pass": 61,
                "accurate_pass": 56,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 170,
            "combined_rank_score": 146.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 15.0,
            "sofascore_rating": 8.3,
            "sofascore_appearances": 2.0,
            "fifa_rank": 278.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0318,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lewis Hall",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Igor Vujačić",
                  "ranking": 165
                },
                {
                  "player_name": "César Montes",
                  "ranking": 166
                },
                {
                  "player_name": "Reis",
                  "ranking": 167
                },
                {
                  "player_name": "Víctor Felipe Méndez",
                  "ranking": 168
                },
                {
                  "player_name": "Serhou Guirassy",
                  "ranking": 169
                }
              ],
              "lower": [
                {
                  "player_name": "Reinaldo",
                  "ranking": 171
                },
                {
                  "player_name": "Lautaro Martínez",
                  "ranking": 172
                },
                {
                  "player_name": "João Pedro",
                  "ranking": 173
                },
                {
                  "player_name": "Dostonbek Khamdamov",
                  "ranking": 174
                },
                {
                  "player_name": "Deniz Undav",
                  "ranking": 175
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 35,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 35,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0122,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 35 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0434,
                "tackles": 2.2689,
                "tackles_won": 1.3011,
                "clearances": 3.2616,
                "aerial_won": 1.1013,
                "total_shots": 0.8574,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 48.8853,
                "accurate_pass": 42.9386,
                "duels_won": 5.4392,
                "total_long_balls": 5.6944,
                "accurate_long_balls": 3.0544,
                "total_own_half_passes": 22.6252,
                "accurate_own_half_passes": 20.8692,
                "total_opp_half_passes": 26.2601,
                "accurate_opp_half_passes": 22.0694,
                "crosses_total": 3.8833,
                "crosses_accurate": 0.9466,
                "touches": 80.7645,
                "possession_lost": 15.1234,
                "dispossessed": 1.6716,
                "duels_lost": 6.6003,
                "aerial_lost": 1.7966,
                "total_contest": 2.7369,
                "won_contest": 1.1899,
                "ball_recovery": 6.4387,
                "challenges_lost": 0.9038,
                "fouls": 0.6926,
                "fouls_drawn": 1.3895,
                "blocks": 1.1519,
                "goals": 0.1691,
                "goal_rate": 0.1691,
                "assists": 0.1116,
                "assist_rate": 0.1116,
                "expected_goals": 0.0542,
                "expected_assists": 0.1176,
                "shots_on_target": 0.4234,
                "big_chances_created": 0.2661,
                "xgot": 0.039,
                "ball_carries": 17.7287,
                "total_progression": 74.1027,
                "progressive_carries": 1.9538,
                "key_pass": 1.1141,
                "shots_off_target": 0.434
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1505,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 9.7
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.3384,
                  "aerialWon": 0.7284,
                  "totalClearance_p90": 4.5062,
                  "totalTackle": 2.0106,
                  "totalPass": 46.5131
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0433708429336548,
                    "model_output": 1.0434,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1189
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0437
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0227
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0189
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0176
                        }
                      ],
                      "others": 0.0097,
                      "total": 1.0434,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129905
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.043803
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.022472
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.018792
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.017131
                        }
                      ],
                      "others_margin": 0.009298
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.2688894271850586,
                    "model_output": 2.2689,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2087
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.1162
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.1223
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.1151
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.112
                        }
                      ],
                      "others": 0.2007,
                      "total": 2.2689,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.139515
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.070028
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.068745
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.060649
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.05568
                        }
                      ],
                      "others_margin": 0.092584
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.301137924194336,
                    "model_output": 1.3011,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1077
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.068
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0613
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0611
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0598
                        }
                      ],
                      "others": 0.0888,
                      "total": 1.3011,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118746
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.068264
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.057781
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.054462
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.050554
                        }
                      ],
                      "others_margin": 0.070846
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.2615723609924316,
                    "model_output": 3.2616,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4703
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3516
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1796
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.1632
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.1066
                        }
                      ],
                      "others": -0.2183,
                      "total": 3.2616,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127737
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.093946
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.049076
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.044506
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.030187
                        }
                      ],
                      "others_margin": -0.064748
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.1013071537017822,
                    "model_output": 1.1013,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2908
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1464
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0914
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0796
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0451
                        }
                      ],
                      "others": -0.103,
                      "total": 1.1013,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.236213
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125849
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.07124
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.061762
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.036784
                        }
                      ],
                      "others_margin": -0.089387
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8573865294456482,
                    "model_output": 0.8574,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.1717
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0666
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0383
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0294
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0258
                        }
                      ],
                      "others": 0.0545,
                      "total": 0.8574,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.171708
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.066575
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.038326
                        },
                        {
                          "name": "rating",
                          "margin": 0.029408
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.025801
                        }
                      ],
                      "others_margin": 0.054435
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.0317702293396,
                    "model_output": 7.0318,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0708
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.053
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0338
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0227
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.014
                        }
                      ],
                      "others": 0.0524,
                      "total": 7.0318,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": 0.070839
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.053028
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.033814
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.022665
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.014047
                        }
                      ],
                      "others_margin": 0.052245
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 35,
                  "role_matches": 29,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0122, quality 0.831)",
              "stats": {
                "interceptions": 1.0561,
                "tackles": 2.2966,
                "tackles_won": 1.317,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8679,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9307,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.701,
                "fouls_drawn": 1.4065,
                "blocks": 1.166,
                "goals": 0.1712,
                "goal_rate": 0.1712,
                "assists": 0.113,
                "assist_rate": 0.113,
                "expected_goals": 0.0549,
                "expected_assists": 0.119,
                "shots_on_target": 0.4286,
                "big_chances_created": 0.2693,
                "xgot": 0.0395,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393
              },
              "params": {
                "market_value_eur": 52000000,
                "quality_factor": 0.8309,
                "boost_factor": 1.0122,
                "reference_quality": 0.505,
                "history_matches": 35,
                "history_shrink": 0.125,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0108)",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goals": 0.1693,
                "goal_rate": 0.1693,
                "assists": 0.1118,
                "assist_rate": 0.1118,
                "expected_goals": 0.0549,
                "expected_assists": 0.119,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0395,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393
              },
              "params": {
                "blend_weight": 0.0108,
                "history_matches": 35,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9776,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.701,
                  "after": 0.7093
                },
                {
                  "stat": "wonTackle",
                  "before": 1.317,
                  "after": 1.3239
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goals": 0.1693,
                "goal_rate": 0.1693,
                "assists": 0.1118,
                "assist_rate": 0.1118,
                "expected_goals": 0.0549,
                "expected_assists": 0.119,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0395,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goals": 0.1693,
                "goal_rate": 0.1693,
                "assists": 0.1118,
                "assist_rate": 0.1118,
                "expected_goals": 0.0549,
                "expected_assists": 0.119,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0395,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.715,
                "opponent_faced": "Daichi Kamada",
                "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Daichi Kamada",
                  "matchup_zone": "Right Wingback vs Left Back — Overlapping Run"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goal_rate": 0.1693,
                "goals": 0,
                "assist_rate": 0.1118,
                "assists": 0,
                "expected_goals": 0.0549,
                "expected_assists": 0.119,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0395,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.715,
                "opponent_faced": "Daichi Kamada",
                "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goal_rate": 0.1693,
                "goals": 0,
                "assist_rate": 0.1118,
                "assists": 0,
                "expected_goals": 0.0683,
                "expected_assists": 0.1867,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0492,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.715,
                "opponent_faced": "Daichi Kamada",
                "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.9574
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0549,
                  "after": 0.0683
                },
                {
                  "stat": "expected_assists",
                  "before": 0.119,
                  "after": 0.1867
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 83.0)",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goal_rate": 0.1693,
                "goals": 0,
                "assist_rate": 0.1118,
                "assists": 0,
                "expected_goals": 0.0683,
                "expected_assists": 0.1867,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0492,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.715,
                "opponent_faced": "Daichi Kamada",
                "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.9574,
                "fifa_overall": 83.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 170,
                "fifa_rank": 278.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 83.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goal_rate": 0.1693,
                "goals": 0,
                "assist_rate": 0.1118,
                "assists": 0,
                "expected_goals": 0.0683,
                "expected_assists": 0.1867,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0492,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.715,
                "opponent_faced": "Daichi Kamada",
                "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.066,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.9574,
                "fifa_overall": 83.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.066,
                "goal_rate": 0.1693,
                "scorer_weight": 0.0854,
                "squad_weight_total": 1.813,
                "weight_share": 0.0471,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.0605,
                "tackles": 2.2966,
                "tackles_won": 1.3239,
                "clearances": 3.3014,
                "aerial_won": 1.1147,
                "total_shots": 0.8638,
                "rating": 7.0318,
                "minutes": 87.98,
                "total_pass": 49.4817,
                "accurate_pass": 43.4625,
                "duels_won": 5.5056,
                "total_long_balls": 5.7639,
                "accurate_long_balls": 3.0917,
                "total_own_half_passes": 22.9012,
                "accurate_own_half_passes": 21.1238,
                "total_opp_half_passes": 26.5805,
                "accurate_opp_half_passes": 22.3386,
                "crosses_total": 3.9305,
                "crosses_accurate": 0.9581,
                "touches": 81.7498,
                "possession_lost": 15.3079,
                "dispossessed": 1.692,
                "duels_lost": 6.6808,
                "aerial_lost": 1.8185,
                "total_contest": 2.7703,
                "won_contest": 1.2044,
                "ball_recovery": 6.5173,
                "challenges_lost": 0.9148,
                "fouls": 0.7093,
                "fouls_drawn": 1.4019,
                "blocks": 1.166,
                "goal_rate": 0.1693,
                "goals": 0,
                "assist_rate": 0.1118,
                "assists": 0,
                "expected_goals": 0.0683,
                "expected_assists": 0.1867,
                "shots_on_target": 0.424,
                "big_chances_created": 0.2693,
                "xgot": 0.0492,
                "ball_carries": 17.945,
                "total_progression": 75.0068,
                "progressive_carries": 1.9776,
                "key_pass": 1.1277,
                "shots_off_target": 0.4393,
                "tackles_in_zone": 2.3,
                "tackles_won_in_zone": 2.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.715,
                "opponent_faced": "Daichi Kamada",
                "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
                "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.066,
                "projected_assists": 0,
                "assist_probability": 0.1703,
                "finishing_factor": 1.25,
                "creation_factor": 0.9574,
                "fifa_overall": 83.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1703,
                "assist_rate": 0.1118,
                "provider_weight": 0.1787,
                "squad_weight_total": 1.1691,
                "weight_share": 0.1529,
                "creation_factor": 0.9574,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Sven Botman": {
          "player_id": 910046,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 193,
          "market_value": 33000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 7,
            "aerial_won": 3,
            "total_shots": 1,
            "rating": 6.9291,
            "minutes": 89,
            "total_pass": 59,
            "accurate_pass": 51,
            "duels_won": 6,
            "total_long_balls": 7,
            "accurate_long_balls": 2,
            "total_own_half_passes": 43,
            "accurate_own_half_passes": 40,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 11,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 77,
            "possession_lost": 8.5673,
            "dispossessed": 0.1819,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0134,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0484,
            "expected_assists": 0.0683,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0223,
            "ball_carries": 20,
            "total_progression": 58,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Jean-Philippe Mateta",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0472,
            "projected_assists": 0,
            "assist_probability": 0.066,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.11,
                "expected_assists": 0.0285,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 62,
                "accurate_pass": 48,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 7,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0354,
                "expected_assists": 0.018,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 78,
                "accurate_pass": 70,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 10,
                "duels_won": 11,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0467,
                "expected_assists": 0.0043,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 74,
                "accurate_pass": 66,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 14,
                "aerial_won": 4,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0022,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 45,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 14,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1622,
                "total_shots": 0,
                "total_pass": 71,
                "accurate_pass": 60,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 6,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.014,
                "expected_assists": 0.0019,
                "total_shots": 1,
                "total_pass": 54,
                "accurate_pass": 49,
                "tackles": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0148,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 27,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 76,
                "accurate_pass": 70,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 8,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0193,
                "expected_assists": 0.0013,
                "total_shots": 1,
                "total_pass": 52,
                "accurate_pass": 41,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 4,
                "clearances": 6,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 51,
                "tackles": 1,
                "interceptions": 3,
                "clearances": 14,
                "aerial_won": 3,
                "duels_won": 9,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 848,
            "combined_rank_score": 403.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 8.0,
            "fifa_rank": 515.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9291,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sven Botman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Emerson Royal",
                  "ranking": 843
                },
                {
                  "player_name": "Jovanny Bolívar",
                  "ranking": 844
                },
                {
                  "player_name": "Vicente Zenteno",
                  "ranking": 845
                },
                {
                  "player_name": "Ilir Krasniqi",
                  "ranking": 846
                },
                {
                  "player_name": "Domenico Berardi",
                  "ranking": 847
                }
              ],
              "lower": [
                {
                  "player_name": "Gerard Moreno",
                  "ranking": 849
                },
                {
                  "player_name": "Rustamzhon Abdukhamidov",
                  "ranking": 850
                },
                {
                  "player_name": "Matvey Safonov",
                  "ranking": 851
                },
                {
                  "player_name": "Leandro Trossard",
                  "ranking": 852
                },
                {
                  "player_name": "André-Franck Zambo Anguissa",
                  "ranking": 853
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 30,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 30,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.01,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 30 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.2164,
                "tackles": 1.3191,
                "tackles_won": 0.7506,
                "clearances": 6.8164,
                "aerial_won": 3.2917,
                "total_shots": 0.6571,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 58.578,
                "accurate_pass": 50.8894,
                "duels_won": 6.2666,
                "total_long_balls": 6.7471,
                "accurate_long_balls": 2.0845,
                "total_own_half_passes": 42.7097,
                "accurate_own_half_passes": 39.6553,
                "total_opp_half_passes": 15.8683,
                "accurate_opp_half_passes": 11.2342,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 75.8715,
                "possession_lost": 8.4825,
                "dispossessed": 0.1801,
                "duels_lost": 3.2607,
                "aerial_lost": 2.2222,
                "total_contest": 0.1003,
                "won_contest": 0.1003,
                "ball_recovery": 2.9856,
                "challenges_lost": 0.3287,
                "fouls": 0.5366,
                "fouls_drawn": 0.9907,
                "blocks": 1.2904,
                "goals": 0.0135,
                "goal_rate": 0.0135,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0385,
                "expected_assists": 0.0431,
                "shots_on_target": 0.1811,
                "big_chances_created": 0.0561,
                "xgot": 0.0177,
                "ball_carries": 20.2745,
                "total_progression": 57.7094,
                "progressive_carries": 0.2412,
                "key_pass": 0.1138,
                "shots_off_target": 0.476
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1512,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1285,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1092,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0928,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0789,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0671,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.057,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0485,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0412,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.035,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 8.2928,
                  "aerialWon": 3.9629,
                  "totalClearance_p90": 8.4734,
                  "totalTackle": 1.1303,
                  "totalPass": 57.1674
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.2163732051849365,
                    "model_output": 1.2164,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1064
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.078
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0439
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0305
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0305
                        }
                      ],
                      "others": 0.0698,
                      "total": 1.2164,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117037
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.077832
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.041303
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.027748
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.026972
                        }
                      ],
                      "others_margin": 0.05898
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.3190829753875732,
                    "model_output": 1.3191,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1412
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0802
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0398
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0315
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0263
                        }
                      ],
                      "others": -0.0382,
                      "total": 1.3191,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.09649
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.053676
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.027704
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.022546
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.019166
                        }
                      ],
                      "others_margin": -0.02855
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.750592052936554,
                    "model_output": 0.7506,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0715
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0348
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0317
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0226
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0209
                        }
                      ],
                      "others": -0.1071,
                      "total": 0.7506,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.080335
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.038366
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.036206
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.026652
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.024631
                        }
                      ],
                      "others_margin": -0.13322
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.816429615020752,
                    "model_output": 6.8164,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.8281
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5718
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3802
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3866
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.4058
                        }
                      ],
                      "others": 0.7925,
                      "total": 6.8164,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.215052
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125405
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.075448
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.07129
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.069745
                        }
                      ],
                      "others_margin": 0.123613
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 3.2916512489318848,
                    "model_output": 3.2917,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.7592
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2663
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2691
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2495
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.2113
                        }
                      ],
                      "others": 0.1543,
                      "total": 3.2917,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.437808
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.117224
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.105972
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.089136
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.069723
                        }
                      ],
                      "others_margin": 0.047973
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6570702791213989,
                    "model_output": 0.6571,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0685
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0423
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0204
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0202
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0155
                        }
                      ],
                      "others": 0.0191,
                      "total": 0.6571,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.06846
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.042291
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.020428
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.02018
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.015542
                        }
                      ],
                      "others_margin": 0.019038
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.929070472717285,
                    "model_output": 6.9291,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": 0.0214
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0192
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0181
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0177
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0138
                        }
                      ],
                      "others": 0.09,
                      "total": 6.9291,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "accuratePass",
                          "margin": 0.021397
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.019231
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.018104
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.017714
                        },
                        {
                          "name": "error_severity",
                          "margin": 0.013772
                        }
                      ],
                      "others_margin": 0.089926
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 30,
                  "role_matches": 26,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0100, quality 0.739)",
              "stats": {
                "interceptions": 1.2285,
                "tackles": 1.3323,
                "tackles_won": 0.7581,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6637,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0256,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.542,
                "fouls_drawn": 1.0006,
                "blocks": 1.3033,
                "goals": 0.0136,
                "goal_rate": 0.0136,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0389,
                "expected_assists": 0.0435,
                "shots_on_target": 0.1829,
                "big_chances_created": 0.0567,
                "xgot": 0.0179,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808
              },
              "params": {
                "market_value_eur": 33000000,
                "quality_factor": 0.7389,
                "boost_factor": 1.01,
                "reference_quality": 0.505,
                "history_matches": 30,
                "history_shrink": 0.1429,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0124)",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goals": 0.0134,
                "goal_rate": 0.0134,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0389,
                "expected_assists": 0.0435,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0179,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808
              },
              "params": {
                "blend_weight": 0.0124,
                "history_matches": 30,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9878,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.2285,
                  "after": 1.2133
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7581,
                  "after": 0.7487
                },
                {
                  "stat": "fouls",
                  "before": 0.542,
                  "after": 0.5353
                },
                {
                  "stat": "wasFouled",
                  "before": 1.0006,
                  "after": 0.9943
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goals": 0.0134,
                "goal_rate": 0.0134,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0389,
                "expected_assists": 0.0435,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0179,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goals": 0.0134,
                "goal_rate": 0.0134,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0389,
                "expected_assists": 0.0435,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0179,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jean-Philippe Mateta",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goal_rate": 0.0134,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0389,
                "expected_assists": 0.0435,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0179,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goal_rate": 0.0134,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0484,
                "expected_assists": 0.0683,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0223,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0389,
                  "after": 0.0484
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0435,
                  "after": 0.0683
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 81.0)",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goal_rate": 0.0134,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0484,
                "expected_assists": 0.0683,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0223,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 848,
                "fifa_rank": 515.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goal_rate": 0.0134,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0484,
                "expected_assists": 0.0683,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0223,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0472,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0472,
                "goal_rate": 0.0134,
                "scorer_weight": 0.0387,
                "squad_weight_total": 1.813,
                "weight_share": 0.0214,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.2133,
                "tackles": 1.3323,
                "tackles_won": 0.7487,
                "clearances": 6.8846,
                "aerial_won": 3.3246,
                "total_shots": 0.6616,
                "rating": 6.9291,
                "minutes": 88.9,
                "total_pass": 59.1638,
                "accurate_pass": 51.3983,
                "duels_won": 6.3293,
                "total_long_balls": 6.8146,
                "accurate_long_balls": 2.1053,
                "total_own_half_passes": 43.1368,
                "accurate_own_half_passes": 40.0519,
                "total_opp_half_passes": 16.027,
                "accurate_opp_half_passes": 11.3465,
                "crosses_total": 0.0253,
                "crosses_accurate": 0.0,
                "touches": 76.6302,
                "possession_lost": 8.5673,
                "dispossessed": 0.1819,
                "duels_lost": 3.2933,
                "aerial_lost": 2.2444,
                "total_contest": 0.1013,
                "won_contest": 0.1013,
                "ball_recovery": 3.0155,
                "challenges_lost": 0.332,
                "fouls": 0.5353,
                "fouls_drawn": 0.9943,
                "blocks": 1.3033,
                "goal_rate": 0.0134,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0484,
                "expected_assists": 0.0683,
                "shots_on_target": 0.1806,
                "big_chances_created": 0.0567,
                "xgot": 0.0223,
                "ball_carries": 20.4772,
                "total_progression": 58.2865,
                "progressive_carries": 0.2436,
                "key_pass": 0.1149,
                "shots_off_target": 0.4808,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0472,
                "projected_assists": 0,
                "assist_probability": 0.066,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.066,
                "assist_rate": 0.0,
                "provider_weight": 0.0546,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0467,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Malick Thiaw": {
          "player_id": 1014286,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 12,
          "height": 194,
          "market_value": 46000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 3,
            "total_shots": 0,
            "rating": 6.8264,
            "minutes": 90,
            "total_pass": 55,
            "accurate_pass": 48,
            "duels_won": 5,
            "total_long_balls": 7,
            "accurate_long_balls": 3,
            "total_own_half_passes": 35,
            "accurate_own_half_passes": 33,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 15,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 67,
            "possession_lost": 7.3587,
            "dispossessed": 0.0026,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0182,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0897,
            "expected_assists": 0.0289,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0747,
            "ball_carries": 22,
            "total_progression": 82,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Jean-Philippe Mateta",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0858,
            "projected_assists": 0,
            "assist_probability": 0.0285,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0614,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 56,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 5,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0168,
                "total_shots": 0,
                "total_pass": 76,
                "accurate_pass": 66,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0114,
                "total_shots": 0,
                "total_pass": 84,
                "accurate_pass": 76,
                "interceptions": 1,
                "clearances": 11,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0047,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 34,
                "interceptions": 1,
                "clearances": 9,
                "aerial_won": 4,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0475,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 57,
                "key_pass": 1,
                "clearances": 3,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0151,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 32,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 20,
                "clearances": 9,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "total_pass": 71,
                "accurate_pass": 64,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 42,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0112,
                "total_shots": 0,
                "total_pass": 64,
                "accurate_pass": 59,
                "tackles": 2,
                "clearances": 3,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 892,
            "combined_rank_score": 418.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 318.0,
            "sofascore_rating": 7.0229,
            "sofascore_appearances": 35.0,
            "fifa_rank": 519.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8264,
            "source_file": "data/player_rankings.csv",
            "player_name": "Malick Thiaw",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Shaylon",
                  "ranking": 887
                },
                {
                  "player_name": "Yeferson Soteldo",
                  "ranking": 888
                },
                {
                  "player_name": "Victor Stina",
                  "ranking": 889
                },
                {
                  "player_name": "Balde",
                  "ranking": 890
                },
                {
                  "player_name": "Alexis Saelemaekers",
                  "ranking": 891
                }
              ],
              "lower": [
                {
                  "player_name": "Maxence Lacroix",
                  "ranking": 893
                },
                {
                  "player_name": "Matty Cash",
                  "ranking": 894
                },
                {
                  "player_name": "Stefan de Vrij",
                  "ranking": 895
                },
                {
                  "player_name": "Óscar Mingueza",
                  "ranking": 896
                },
                {
                  "player_name": "Moleiro",
                  "ranking": 897
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 40,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 40,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0101,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 40 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.9059,
                "tackles": 1.0706,
                "tackles_won": 0.6104,
                "clearances": 6.3306,
                "aerial_won": 3.203,
                "total_shots": 0.4505,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.1235,
                "accurate_pass": 47.2316,
                "duels_won": 4.5447,
                "total_long_balls": 6.5775,
                "accurate_long_balls": 2.6619,
                "total_own_half_passes": 34.7747,
                "accurate_own_half_passes": 32.7318,
                "total_opp_half_passes": 19.3488,
                "accurate_opp_half_passes": 14.4998,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.0069,
                "touches": 66.191,
                "possession_lost": 7.2851,
                "dispossessed": 0.0026,
                "duels_lost": 2.7191,
                "aerial_lost": 1.7395,
                "total_contest": 0.3949,
                "won_contest": 0.3949,
                "ball_recovery": 2.5466,
                "challenges_lost": 0.2706,
                "fouls": 0.7331,
                "fouls_drawn": 0.4539,
                "blocks": 1.1971,
                "goals": 0.0182,
                "goal_rate": 0.0182,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0714,
                "expected_assists": 0.0182,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.0594,
                "ball_carries": 21.8936,
                "total_progression": 81.2371,
                "progressive_carries": 0.472,
                "key_pass": 0.1526,
                "shots_off_target": 0.29
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.9122,
                  "aerialWon": 3.0784,
                  "totalClearance_p90": 6.0151,
                  "totalTackle": 0.6994,
                  "totalPass": 53.5504
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9058689475059509,
                    "model_output": 0.9059,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1138
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0267
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0246
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0233
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0178
                        }
                      ],
                      "others": -0.0194,
                      "total": 0.9059,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124672
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.027864
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.026401
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.024976
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.01901
                        }
                      ],
                      "others_margin": -0.021234
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.0706150531768799,
                    "model_output": 1.0706,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1675
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1131
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0776
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0669
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.049
                        }
                      ],
                      "others": -0.1842,
                      "total": 1.0706,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113502
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.075162
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.055051
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.050028
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.038339
                        }
                      ],
                      "others_margin": -0.158778
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6103615164756775,
                    "model_output": 0.6104,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0899
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0742
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.063
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0352
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0295
                        }
                      ],
                      "others": -0.132,
                      "total": 0.6104,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.100064
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.081796
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.075165
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.044655
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.03892
                        }
                      ],
                      "others_margin": -0.195818
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.3305768966674805,
                    "model_output": 6.3306,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.7396
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.58
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.3283
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.267
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2798
                        }
                      ],
                      "others": 0.6845,
                      "total": 6.3306,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.194159
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12961
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.066555
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.051043
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.050825
                        }
                      ],
                      "others_margin": 0.114418
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 3.2029690742492676,
                    "model_output": 3.203,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.6014
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2322
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2365
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1587
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1422
                        }
                      ],
                      "others": 0.45,
                      "total": 3.203,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.36129
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110697
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.101405
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.06273
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.053024
                        }
                      ],
                      "others_margin": 0.151379
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.45051512122154236,
                    "model_output": 0.4505,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0941
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0547
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0225
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0169
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0136
                        }
                      ],
                      "others": -0.0342,
                      "total": 0.4505,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.094086
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.054735
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.022514
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.016931
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.013599
                        }
                      ],
                      "others_margin": -0.03431
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.826425075531006,
                    "model_output": 6.8264,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": 0.0301
                        },
                        {
                          "name": "rating",
                          "contribution": -0.024
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0191
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.013
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0123
                        }
                      ],
                      "others": 0.029,
                      "total": 6.8264,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "accuratePass",
                          "margin": 0.030051
                        },
                        {
                          "name": "rating",
                          "margin": -0.02397
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.019111
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.013018
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.012339
                        }
                      ],
                      "others_margin": 0.028966
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 40,
                  "role_matches": 38,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0101, quality 0.809)",
              "stats": {
                "interceptions": 0.915,
                "tackles": 1.0814,
                "tackles_won": 0.6165,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4551,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0216,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.7405,
                "fouls_drawn": 0.4585,
                "blocks": 1.2092,
                "goals": 0.0184,
                "goal_rate": 0.0184,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0721,
                "expected_assists": 0.0184,
                "shots_on_target": 0.1621,
                "big_chances_created": 0.0005,
                "xgot": 0.06,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929
              },
              "params": {
                "market_value_eur": 46000000,
                "quality_factor": 0.8089,
                "boost_factor": 1.0101,
                "reference_quality": 0.505,
                "history_matches": 40,
                "history_shrink": 0.1111,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0096)",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4507,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goals": 0.0182,
                "goal_rate": 0.0182,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0721,
                "expected_assists": 0.0184,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.06,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929
              },
              "params": {
                "blend_weight": 0.0096,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9977,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.4585,
                  "after": 0.4685
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.915,
                  "after": 0.9062
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6165,
                  "after": 0.6106
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4534,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goals": 0.0182,
                "goal_rate": 0.0182,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0721,
                "expected_assists": 0.0184,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.06,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4534,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goals": 0.0182,
                "goal_rate": 0.0182,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0721,
                "expected_assists": 0.0184,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.06,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jean-Philippe Mateta",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4534,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goal_rate": 0.0182,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0721,
                "expected_assists": 0.0184,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.06,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4534,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goal_rate": 0.0182,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0289,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.0747,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0721,
                  "after": 0.0897
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0184,
                  "after": 0.0289
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 81.0)",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4534,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goal_rate": 0.0182,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0289,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.0747,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 892,
                "fifa_rank": 519.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4534,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goal_rate": 0.0182,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0289,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.0747,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0858,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0858,
                "goal_rate": 0.0182,
                "scorer_weight": 0.0718,
                "squad_weight_total": 1.813,
                "weight_share": 0.0396,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 0.9062,
                "tackles": 1.0814,
                "tackles_won": 0.6106,
                "clearances": 6.3945,
                "aerial_won": 3.2353,
                "total_shots": 0.4534,
                "rating": 6.8264,
                "minutes": 89.79,
                "total_pass": 54.6701,
                "accurate_pass": 47.7086,
                "duels_won": 4.5906,
                "total_long_balls": 6.6439,
                "accurate_long_balls": 2.6888,
                "total_own_half_passes": 35.1259,
                "accurate_own_half_passes": 33.0624,
                "total_opp_half_passes": 19.5442,
                "accurate_opp_half_passes": 14.6462,
                "crosses_total": 0.0214,
                "crosses_accurate": 0.007,
                "touches": 66.8595,
                "possession_lost": 7.3587,
                "dispossessed": 0.0026,
                "duels_lost": 2.7466,
                "aerial_lost": 1.7571,
                "total_contest": 0.3989,
                "won_contest": 0.3989,
                "ball_recovery": 2.5723,
                "challenges_lost": 0.2733,
                "fouls": 0.743,
                "fouls_drawn": 0.4685,
                "blocks": 1.2092,
                "goal_rate": 0.0182,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0289,
                "shots_on_target": 0.1605,
                "big_chances_created": 0.0005,
                "xgot": 0.0747,
                "ball_carries": 22.1147,
                "total_progression": 82.0576,
                "progressive_carries": 0.4768,
                "key_pass": 0.1541,
                "shots_off_target": 0.2929,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Jean-Philippe Mateta",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0858,
                "projected_assists": 0,
                "assist_probability": 0.0285,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0285,
                "assist_rate": 0.0,
                "provider_weight": 0.0231,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0198,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Lewis Miley": {
          "player_id": 1400650,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 67,
          "height": 188,
          "market_value": 32000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1166,
            "assist_rate": 0.0755,
            "assists": 0,
            "expected_goals": 0.0528,
            "goal_rate": 0.0422,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9125,
            "minutes": 84,
            "total_pass": 51,
            "accurate_pass": 46,
            "duels_won": 4,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 26,
            "accurate_own_half_passes": 24,
            "total_opp_half_passes": 25,
            "accurate_opp_half_passes": 22,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 66,
            "possession_lost": 8.6121,
            "dispossessed": 0.5131,
            "duels_lost": 3,
            "aerial_won": 2,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 3,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0386,
            "ball_carries": 18,
            "total_progression": 35,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "opponent_faced": "Anan Khalaili",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0514,
            "projected_assists": 0,
            "assist_probability": 0.1101,
            "finishing_factor": 0.9978,
            "creation_factor": 1.0097,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3008,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 27,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 59,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0127,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 37,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0405,
                "total_shots": 0,
                "total_pass": 69,
                "accurate_pass": 66,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 80,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0334,
                "total_shots": 0,
                "total_pass": 60,
                "accurate_pass": 52,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 63,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0188,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 28,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0419,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 48,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 76,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.053,
                "expected_assists": 0.0085,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 30,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0283,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "tackles": 1,
                "clearances": 7,
                "aerial_won": 4,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025045,
              "match_date": "2026-04-25",
              "home_team": "Arsenal",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0345,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 52,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025040,
              "match_date": "2026-04-18",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0329,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 44,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2108,
            "combined_rank_score": 799.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1442.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9125,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lewis Miley",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Diego Moreira",
                  "ranking": 2103
                },
                {
                  "player_name": "Chris Long",
                  "ranking": 2104
                },
                {
                  "player_name": "Richard Ríos",
                  "ranking": 2105
                },
                {
                  "player_name": "Abdel Rahim",
                  "ranking": 2106
                },
                {
                  "player_name": "Matthew Sheridan",
                  "ranking": 2107
                }
              ],
              "lower": [
                {
                  "player_name": "Richarlison",
                  "ranking": 2109
                },
                {
                  "player_name": "Antonio Díaz",
                  "ranking": 2110
                },
                {
                  "player_name": "Cristian Palacios",
                  "ranking": 2111
                },
                {
                  "player_name": "Han-gil Kim",
                  "ranking": 2112
                },
                {
                  "player_name": "Sardor Abduraimov",
                  "ranking": 2113
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.768,
          "history_matches": 28,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 28,
            "data_confidence": 0.768,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0103,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 165.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.55,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.12
            },
            "rationale": "XGBoost regressor (M_service) evaluated 28 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.12, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.8057,
                "expected_assists": 0.0735,
                "assists": 0.0756,
                "assist_rate": 0.0756,
                "expected_goals": 0.042,
                "goals": 0.0423,
                "goal_rate": 0.0423,
                "shots_on_target": 0.1446,
                "total_shots": 0.5006,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 50.7926,
                "accurate_pass": 45.4936,
                "duels_won": 4.2324,
                "total_long_balls": 2.9549,
                "accurate_long_balls": 1.4624,
                "total_own_half_passes": 25.6984,
                "accurate_own_half_passes": 24.0587,
                "total_opp_half_passes": 25.0942,
                "accurate_opp_half_passes": 21.4349,
                "crosses_total": 1.4398,
                "crosses_accurate": 0.1692,
                "touches": 65.2048,
                "possession_lost": 8.5243,
                "dispossessed": 0.5079,
                "duels_lost": 2.8282,
                "aerial_won": 1.8691,
                "aerial_lost": 0.9864,
                "interceptions": 1.0241,
                "tackles_won": 1.0314,
                "tackles": 1.6014,
                "clearances": 2.5873,
                "total_contest": 0.7234,
                "won_contest": 0.5426,
                "challenges_lost": 0.8203,
                "fouls": 0.3329,
                "fouls_drawn": 0.2501,
                "blocks": 0.4625,
                "big_chances_created": 0.079,
                "big_chances_missed": 0.0477,
                "xgot": 0.0307,
                "ball_carries": 17.8097,
                "total_progression": 34.6779,
                "progressive_carries": 0.6255,
                "shots_off_target": 0.356
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0673,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0572,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0486,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0413,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-01-25",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.2499,
                  "creative_index": 0.295,
                  "expectedGoals": 0.0296,
                  "expectedAssists": 0.0536,
                  "onTargetScoringAttempt": 0.0583
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8056818842887878,
                    "model_output": 0.8057,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1313
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0736
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0695
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0435
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0391
                        }
                      ],
                      "others": -0.1251,
                      "total": 0.8057,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.138147
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.075097
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.071047
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.043877
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.041113
                        }
                      ],
                      "others_margin": -0.144357
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0735112875699997,
                    "model_output": 0.0735,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0134
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0105
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0051
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0044
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0032
                        }
                      ],
                      "others": -0.0177,
                      "total": 0.0735,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.1449
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.11241
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.059033
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.051118
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.035985
                        }
                      ],
                      "others_margin": -0.214828
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07561975717544556,
                    "model_output": 0.0756,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0085
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0083
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0064
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0029
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0028
                        }
                      ],
                      "others": -0.0105,
                      "total": 0.0756,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.095325
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.093254
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.072299
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.031706
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.031693
                        }
                      ],
                      "others_margin": -0.130602
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04195977374911308,
                    "model_output": 0.042,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0194
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0117
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0102
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0096
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0169,
                      "total": 0.042,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.230395
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.170345
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.149671
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.140027
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.081404
                        }
                      ],
                      "others_margin": -0.338625
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04230490326881409,
                    "model_output": 0.0423,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0177
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.01
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0077
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0061
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0059
                        }
                      ],
                      "others": -0.0197,
                      "total": 0.0423,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.199711
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.133045
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.116429
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.103246
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.099751
                        }
                      ],
                      "others_margin": -0.383759
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14456912875175476,
                    "model_output": 0.1446,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.09
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0469
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0249
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0191
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0156
                        }
                      ],
                      "others": -0.0327,
                      "total": 0.1446,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.325343
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.223817
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125069
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.094622
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.084534
                        }
                      ],
                      "others_margin": -0.203712
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5005522966384888,
                    "model_output": 0.5006,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.242
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1187
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0713
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0571
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0522
                        }
                      ],
                      "others": -0.186,
                      "total": 0.5006,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.241968
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118709
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.071275
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.057124
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.052158
                        }
                      ],
                      "others_margin": -0.186096
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.912464141845703,
                    "model_output": 6.9125,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0795
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0311
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0289
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0177
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0165
                        }
                      ],
                      "others": -0.0193,
                      "total": 6.9125,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.079467
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.031148
                        },
                        {
                          "name": "rating",
                          "margin": -0.028917
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.017736
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016486
                        }
                      ],
                      "others_margin": -0.019354
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 28,
                  "role_matches": 20,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0103, quality 0.732)",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.0743,
                "assists": 0.0764,
                "assist_rate": 0.0764,
                "expected_goals": 0.0424,
                "goals": 0.0427,
                "goal_rate": 0.0427,
                "shots_on_target": 0.1461,
                "total_shots": 0.5058,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4546,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0346,
                "tackles_won": 1.042,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3363,
                "fouls_drawn": 0.2527,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.031,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597
              },
              "params": {
                "market_value_eur": 32000000,
                "quality_factor": 0.732,
                "boost_factor": 1.0103,
                "reference_quality": 0.505,
                "history_matches": 28,
                "history_shrink": 0.1515,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0118)",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.0743,
                "assists": 0.0755,
                "assist_rate": 0.0755,
                "expected_goals": 0.0424,
                "goals": 0.0422,
                "goal_rate": 0.0422,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.031,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597
              },
              "params": {
                "blend_weight": 0.0118,
                "history_matches": 28,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9378,
                "prior_reliability": 0.12,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.4546,
                  "after": 1.4374
                },
                {
                  "stat": "wasFouled",
                  "before": 0.2527,
                  "after": 0.262
                },
                {
                  "stat": "wonTackle",
                  "before": 1.042,
                  "after": 1.0358
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.0743,
                "assists": 0.0755,
                "assist_rate": 0.0755,
                "expected_goals": 0.0424,
                "goals": 0.0422,
                "goal_rate": 0.0422,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.031,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.0743,
                "assists": 0.0755,
                "assist_rate": 0.0755,
                "expected_goals": 0.0424,
                "goals": 0.0422,
                "goal_rate": 0.0422,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.031,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597,
                "opponent_faced": "Anan Khalaili",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Anan Khalaili",
                  "matchup_zone": "Midfield lane"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.0743,
                "assist_rate": 0.0755,
                "assists": 0,
                "expected_goals": 0.0424,
                "goal_rate": 0.0422,
                "goals": 0,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.031,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597,
                "opponent_faced": "Anan Khalaili",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.1166,
                "assist_rate": 0.0755,
                "assists": 0,
                "expected_goals": 0.0528,
                "goal_rate": 0.0422,
                "goals": 0,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.0386,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597,
                "opponent_faced": "Anan Khalaili",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9978,
                "creation_factor": 1.0097
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0424,
                  "after": 0.0528
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0743,
                  "after": 0.1166
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.1166,
                "assist_rate": 0.0755,
                "assists": 0,
                "expected_goals": 0.0528,
                "goal_rate": 0.0422,
                "goals": 0,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.0386,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597,
                "opponent_faced": "Anan Khalaili",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9978,
                "creation_factor": 1.0097,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2108,
                "fifa_rank": 1442.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.1166,
                "assist_rate": 0.0755,
                "assists": 0,
                "expected_goals": 0.0528,
                "goal_rate": 0.0422,
                "goals": 0,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.0386,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597,
                "opponent_faced": "Anan Khalaili",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0514,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9978,
                "creation_factor": 1.0097,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0514,
                "goal_rate": 0.0422,
                "scorer_weight": 0.0527,
                "squad_weight_total": 1.813,
                "weight_share": 0.0291,
                "finishing_factor": 0.9978,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.814,
                "expected_assists": 0.1166,
                "assist_rate": 0.0755,
                "assists": 0,
                "expected_goals": 0.0528,
                "goal_rate": 0.0422,
                "goals": 0,
                "shots_on_target": 0.1444,
                "total_shots": 0.5059,
                "rating": 6.9125,
                "minutes": 84.4,
                "total_pass": 51.3158,
                "accurate_pass": 45.9622,
                "duels_won": 4.276,
                "total_long_balls": 2.9853,
                "accurate_long_balls": 1.4775,
                "total_own_half_passes": 25.9631,
                "accurate_own_half_passes": 24.3065,
                "total_opp_half_passes": 25.3527,
                "accurate_opp_half_passes": 21.6557,
                "crosses_total": 1.4374,
                "crosses_accurate": 0.1709,
                "touches": 65.8764,
                "possession_lost": 8.6121,
                "dispossessed": 0.5131,
                "duels_lost": 2.8573,
                "aerial_won": 1.8884,
                "aerial_lost": 0.9966,
                "interceptions": 1.0347,
                "tackles_won": 1.0358,
                "tackles": 1.6179,
                "clearances": 2.6139,
                "total_contest": 0.7309,
                "won_contest": 0.5482,
                "challenges_lost": 0.8287,
                "fouls": 0.3385,
                "fouls_drawn": 0.262,
                "blocks": 0.4673,
                "big_chances_created": 0.0798,
                "big_chances_missed": 0.0482,
                "xgot": 0.0386,
                "ball_carries": 17.9931,
                "total_progression": 35.0351,
                "progressive_carries": 0.6319,
                "shots_off_target": 0.3597,
                "opponent_faced": "Anan Khalaili",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0514,
                "projected_assists": 0,
                "assist_probability": 0.1101,
                "finishing_factor": 0.9978,
                "creation_factor": 1.0097,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1101,
                "assist_rate": 0.0755,
                "provider_weight": 0.1177,
                "squad_weight_total": 1.1691,
                "weight_share": 0.1007,
                "creation_factor": 1.0097,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "William Osula": {
          "player_id": 1122603,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 191,
          "market_value": 29000000,
          "stats": {
            "expected_goals": 0.4224,
            "goal_rate": 0.4789,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.1131,
            "key_pass": 1,
            "rating": 6.909,
            "minutes": 73,
            "total_pass": 6,
            "accurate_pass": 5,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 5.46,
            "dispossessed": 0.9736,
            "duels_lost": 5,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.2022,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.5541,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 44,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0254,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.217,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Axel Disasi, Chris Richards",
            "opponent_faced": "Axel Disasi, Chris Richards",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.3445,
            "projected_assists": 0,
            "assist_probability": 0.1069,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 34,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0564,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 1,
                "accurate_pass": 1,
                "key_pass": 1
              },
              "has_player_stats": true,
              "source": "lineup.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1216,
                "expected_assists": 0.0003,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 3,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 56,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0587,
                "expected_assists": 0.1388,
                "total_shots": 2,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 66,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 85,
                "rating": 9.2,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.9106,
                "expected_assists": 0.1517,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 71,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.572,
                "expected_assists": 0.0148,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 68,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7849,
                "expected_assists": 0.3057,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 1,
                "accurate_pass": 1,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025045,
              "match_date": "2026-04-25",
              "home_team": "Arsenal",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 66,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0512,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2,
                "key_pass": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025040,
              "match_date": "2026-04-18",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3916,
                "expected_assists": 0.0417,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 12,
                "key_pass": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023999,
              "match_date": "2026-04-12",
              "home_team": "Crystal Palace",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 84,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.9399,
                "expected_assists": 0.0051,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 9,
                "accurate_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3411,
            "combined_rank_score": 1395.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 570.0,
            "sofascore_rating": 6.8091,
            "sofascore_appearances": 24.0,
            "fifa_rank": 2220.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.909,
            "source_file": "data/player_rankings.csv",
            "player_name": "William Osula",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Anis Hadj Moussa",
                  "ranking": 3406
                },
                {
                  "player_name": "Jordy Clasie",
                  "ranking": 3407
                },
                {
                  "player_name": "Ethan Pinnock",
                  "ranking": 3408
                },
                {
                  "player_name": "Alassane Pléa",
                  "ranking": 3409
                },
                {
                  "player_name": "Caio Henrique",
                  "ranking": 3410
                }
              ],
              "lower": [
                {
                  "player_name": "Justin De Haas",
                  "ranking": 3412
                },
                {
                  "player_name": "Nahuel Losada",
                  "ranking": 3413
                },
                {
                  "player_name": "Sven Mijnans",
                  "ranking": 3414
                },
                {
                  "player_name": "Dário Essugo",
                  "ranking": 3415
                },
                {
                  "player_name": "Niclas Füllkrug",
                  "ranking": 3416
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.756,
          "history_matches": 25,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 25,
            "data_confidence": 0.756,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0102,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 55.0,
              "goals_per90": 0.0,
              "assists_per90": 1.6666666666666667,
              "shots_per90": 3.27,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.04
            },
            "rationale": "XGBoost regressor (F_service) evaluated 25 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Newcastle, rel: 0.04, gls/90: 0.0, ast/90: 1.6666666666666667)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3275,
                "goals": 0.4643,
                "goal_rate": 0.4643,
                "shots_on_target": 0.9056,
                "total_shots": 2.1015,
                "expected_assists": 0.0714,
                "key_pass": 0.7912,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.8612,
                "accurate_pass": 4.7935,
                "duels_won": 3.0393,
                "total_long_balls": 0.141,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.0799,
                "accurate_opp_half_passes": 3.2268,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.1885,
                "touches": 18.0562,
                "possession_lost": 5.4049,
                "dispossessed": 0.9638,
                "duels_lost": 5.1807,
                "aerial_lost": 2.0709,
                "total_contest": 1.1248,
                "won_contest": 0.6031,
                "ball_recovery": 1.4769,
                "challenges_lost": 0.4017,
                "fouls": 1.3384,
                "fouls_drawn": 1.3581,
                "assists": 0.1952,
                "assist_rate": 0.1952,
                "interceptions": 0.0,
                "tackles_won": 0.6847,
                "tackles": 0.7379,
                "clearances": 0.0,
                "blocks": 0.3904,
                "big_chances_created": 0.2341,
                "big_chances_missed": 0.4448,
                "xgot": 0.4298,
                "offsides": 0.2147,
                "ball_carries": 6.1711,
                "total_progression": 43.4558,
                "progressive_carries": 1.9339,
                "shots_off_target": 1.1959
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.1526,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1297,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1103,
                    "rating": 9.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0937,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0797,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0677,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0576,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Crystal Palace",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0489,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Sunderland",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0416,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-04",
                    "opponent": "Manchester United",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0354,
                    "rating": 7.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3002,
                  "totalOppositionHalfPasses": 3.2226,
                  "accurateOppositionHalfPasses": 2.5101,
                  "accuratePass": 3.6381,
                  "totalShots": 1.6383
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.3275238275527954,
                    "model_output": 0.3275,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0679
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0334
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0205
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0177
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0163
                        }
                      ],
                      "others": -0.0273,
                      "total": 0.3275,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.29374
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.118056
                        },
                        {
                          "name": "goals",
                          "margin": 0.065902
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.053851
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.047013
                        }
                      ],
                      "others_margin": -0.080077
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.46428918838500977,
                    "model_output": 0.4643,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0693
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0578
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0409
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0373
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0244
                        }
                      ],
                      "others": 0.0309,
                      "total": 0.4643,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.292586
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.192013
                        },
                        {
                          "name": "goals",
                          "margin": 0.116458
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.095729
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.058031
                        }
                      ],
                      "others_margin": 0.0688
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.9055749177932739,
                    "model_output": 0.9056,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1711
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0511
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0529
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0466
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0393
                        }
                      ],
                      "others": 0.0076,
                      "total": 0.9056,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.276561
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.069654
                        },
                        {
                          "name": "goals",
                          "margin": 0.067363
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.055757
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.04473
                        }
                      ],
                      "others_margin": 0.008544
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.1014275550842285,
                    "model_output": 2.1014,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5039
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0994
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0736
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0584
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0554
                        }
                      ],
                      "others": -0.068,
                      "total": 2.1014,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.503913
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.099414
                        },
                        {
                          "name": "goals",
                          "margin": 0.073638
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.058439
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.055405
                        }
                      ],
                      "others_margin": -0.068087
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07138125598430634,
                    "model_output": 0.0714,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0169
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0093
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0063
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0054
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0053
                        }
                      ],
                      "others": -0.0049,
                      "total": 0.0714,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.234019
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.121652
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.091042
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.079393
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.071502
                        }
                      ],
                      "others_margin": -0.067484
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7912179231643677,
                    "model_output": 0.7912,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2255
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0666
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0412
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0382
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0317
                        }
                      ],
                      "others": 0.0694,
                      "total": 0.7912,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.288595
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.076965
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.050751
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.049476
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.043021
                        }
                      ],
                      "others_margin": 0.091996
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.908990859985352,
                    "model_output": 6.909,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0756
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0551
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0207
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.016
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0137
                        }
                      ],
                      "others": 0.0391,
                      "total": 6.909,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.075564
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.055093
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.020733
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016038
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.013688
                        }
                      ],
                      "others_margin": 0.039255
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 25,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0102, quality 0.710)",
              "stats": {
                "expected_goals": 0.3309,
                "goals": 0.469,
                "goal_rate": 0.469,
                "shots_on_target": 0.9148,
                "total_shots": 2.1229,
                "expected_assists": 0.0721,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1904,
                "crosses_accurate": 0.1904,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3521,
                "fouls_drawn": 1.372,
                "assists": 0.1972,
                "assist_rate": 0.1972,
                "interceptions": 0.0,
                "tackles_won": 0.6917,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4493,
                "xgot": 0.4342,
                "offsides": 0.2169,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2081
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0102,
                "reference_quality": 0.505,
                "history_matches": 25,
                "history_shrink": 0.1667,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0043)",
              "stats": {
                "expected_goals": 0.3309,
                "goals": 0.467,
                "goal_rate": 0.467,
                "shots_on_target": 0.9108,
                "total_shots": 2.1252,
                "expected_assists": 0.0721,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1904,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assists": 0.2022,
                "assist_rate": 0.2022,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4493,
                "xgot": 0.4342,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2081
              },
              "params": {
                "blend_weight": 0.0043,
                "history_matches": 25,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8134,
                "prior_reliability": 0.04,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.3521,
                  "after": 1.3462
                },
                {
                  "stat": "wasFouled",
                  "before": 1.372,
                  "after": 1.3661
                },
                {
                  "stat": "goalAssist",
                  "before": 0.1972,
                  "after": 0.2022
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3309,
                "goals": 0.467,
                "goal_rate": 0.467,
                "shots_on_target": 0.9108,
                "total_shots": 2.1252,
                "expected_assists": 0.0721,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1896,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assists": 0.2022,
                "assist_rate": 0.2022,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4493,
                "xgot": 0.4342,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2081
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.3393,
                "goals": 0.4789,
                "goal_rate": 0.4789,
                "shots_on_target": 0.9339,
                "total_shots": 2.1792,
                "expected_assists": 0.0721,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1896,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assists": 0.2022,
                "assist_rate": 0.2022,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4607,
                "xgot": 0.4452,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2388,
                "duel_xg_multiplier": 1.0254,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.217,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Axel Disasi, Chris Richards",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.217,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0254,
                  "skill_edge": 0.0093,
                  "height_edge": 0.008,
                  "attacker_skill": 0.71,
                  "defender_skill": 0.6893,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Axel Disasi",
                      "market_value": 15500000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6376
                    },
                    {
                      "player": "Chris Richards",
                      "market_value": 25000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7411
                    }
                  ],
                  "xg_override": 0.3393
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.1252,
                  "after": 2.1792
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2081,
                  "after": 1.2388
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.9108,
                  "after": 0.9339
                },
                {
                  "stat": "goals",
                  "before": 0.467,
                  "after": 0.4789
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.4493,
                  "after": 0.4607
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.4342,
                  "after": 0.4452
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3309,
                  "after": 0.3393
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.3393,
                "goal_rate": 0.4789,
                "goals": 0,
                "shots_on_target": 0.9339,
                "total_shots": 2.1792,
                "expected_assists": 0.0721,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1896,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assist_rate": 0.2022,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4607,
                "xgot": 0.4452,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2388,
                "duel_xg_multiplier": 1.0254,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.217,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.4224,
                "goal_rate": 0.4789,
                "goals": 0,
                "shots_on_target": 0.9339,
                "total_shots": 2.1792,
                "expected_assists": 0.1131,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1896,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assist_rate": 0.2022,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4607,
                "xgot": 0.5541,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2388,
                "duel_xg_multiplier": 1.0254,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.217,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.3393,
                  "after": 0.4224
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0721,
                  "after": 0.1131
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 75.0)",
              "stats": {
                "expected_goals": 0.4224,
                "goal_rate": 0.4789,
                "goals": 0,
                "shots_on_target": 0.9339,
                "total_shots": 2.1792,
                "expected_assists": 0.1131,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1896,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assist_rate": 0.2022,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4607,
                "xgot": 0.5541,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2388,
                "duel_xg_multiplier": 1.0254,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.217,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3411,
                "fifa_rank": 2220.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.4224,
                "goal_rate": 0.4789,
                "goals": 1,
                "shots_on_target": 0.9339,
                "total_shots": 2.1792,
                "expected_assists": 0.1131,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1896,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assist_rate": 0.2022,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4607,
                "xgot": 0.5541,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2388,
                "duel_xg_multiplier": 1.0254,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.217,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3445,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 1,
                "goal_probability": 0.3445,
                "goal_rate": 0.4789,
                "scorer_weight": 0.528,
                "squad_weight_total": 1.813,
                "weight_share": 0.2912,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.4224,
                "goal_rate": 0.4789,
                "goals": 1,
                "shots_on_target": 0.9339,
                "total_shots": 2.1792,
                "expected_assists": 0.1131,
                "key_pass": 0.7993,
                "rating": 6.909,
                "minutes": 73.21,
                "total_pass": 5.921,
                "accurate_pass": 4.8424,
                "duels_won": 3.0703,
                "total_long_balls": 0.1424,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.1215,
                "accurate_opp_half_passes": 3.2597,
                "crosses_total": 0.1896,
                "crosses_accurate": 0.1896,
                "touches": 18.2404,
                "possession_lost": 5.46,
                "dispossessed": 0.9736,
                "duels_lost": 5.2335,
                "aerial_lost": 2.092,
                "total_contest": 1.1363,
                "won_contest": 0.6093,
                "ball_recovery": 1.492,
                "challenges_lost": 0.4058,
                "fouls": 1.3462,
                "fouls_drawn": 1.3661,
                "assist_rate": 0.2022,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6946,
                "tackles": 0.7454,
                "clearances": 0.0,
                "blocks": 0.3944,
                "big_chances_created": 0.2365,
                "big_chances_missed": 0.4607,
                "xgot": 0.5541,
                "offsides": 0.216,
                "ball_carries": 6.234,
                "total_progression": 43.899,
                "progressive_carries": 1.9536,
                "shots_off_target": 1.2388,
                "duel_xg_multiplier": 1.0254,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.217,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Axel Disasi, Chris Richards",
                "opponent_faced": "Axel Disasi, Chris Richards",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3445,
                "projected_assists": 0,
                "assist_probability": 0.1069,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1069,
                "assist_rate": 0.2022,
                "provider_weight": 0.1414,
                "squad_weight_total": 1.1691,
                "weight_share": 0.1209,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Ewen Jaouen": {
          "player_id": 1154665,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 197,
          "market_value": 19000000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0341,
            "rating": 7.0,
            "minutes": 5,
            "total_pass": 2,
            "accurate_pass": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0228,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1536,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "bench_appearance_probability": 0.142,
            "bench_expected_minutes": 5.12,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 70.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4769,
            "combined_rank_score": 2849.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 5567.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ewen Jaouen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Semi Ajayi",
                  "ranking": 4764
                },
                {
                  "player_name": "Gerardo Arteaga",
                  "ranking": 4765
                },
                {
                  "player_name": "Hirving Lozano",
                  "ranking": 4766
                },
                {
                  "player_name": "Mauro Silveira",
                  "ranking": 4767
                },
                {
                  "player_name": "Manu García",
                  "ranking": 4768
                }
              ],
              "lower": [
                {
                  "player_name": "Hannes Wolf",
                  "ranking": 4770
                },
                {
                  "player_name": "Nouhou Tolo",
                  "ranking": 4771
                },
                {
                  "player_name": "Djordje Mihailovic",
                  "ranking": 4772
                },
                {
                  "player_name": "Eduard Löwen",
                  "ranking": 4773
                },
                {
                  "player_name": "Riqui Puig",
                  "ranking": 4774
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "G_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 5.119616104970538,
            "bench_appearance_prob": 0.14180073204411536,
            "market_value_adjustment": 0.6211,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection from market-value prior (€19,000,000) scaled to 5.1 expected mins; FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.62)",
              "stats": {
                "saves": 3.4,
                "goals_prevented": 0.6,
                "rating": 7.0,
                "minutes": 90.0,
                "total_pass": 29.0,
                "accurate_pass": 22.0,
                "total_long_balls": 10.0,
                "accurate_long_balls": 5.0,
                "touches": 34.0,
                "clearances": 1.1,
                "ball_recovery": 1.4,
                "high_claims": 0.7,
                "punches": 0.4,
                "aerial_won": 0.8,
                "sweeper_actions": 1.4,
                "sweeper_accurate": 0.9,
                "saves_inside_box": 1.4,
                "possession_lost": 2.7,
                "duels_won": 0.5,
                "duels_lost": 0.3,
                "total_contest": 0.5,
                "won_contest": 0.3,
                "fouls": 0.2,
                "fouls_drawn": 0.1,
                "total_own_half_passes": 23.0,
                "accurate_own_half_passes": 18.0
              },
              "params": {
                "market_value_eur": 19000000,
                "quality_factor": 0.6211
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 5.1 expected minutes (appearance prob 0.14)",
              "stats": {
                "saves": 0.1934,
                "goals_prevented": 0.0341,
                "rating": 7.0,
                "minutes": 5.12,
                "total_pass": 1.6497,
                "accurate_pass": 1.2515,
                "total_long_balls": 0.5688,
                "accurate_long_balls": 0.2844,
                "touches": 1.9341,
                "clearances": 0.0626,
                "ball_recovery": 0.0796,
                "high_claims": 0.0398,
                "punches": 0.0228,
                "aerial_won": 0.0455,
                "sweeper_actions": 0.0796,
                "sweeper_accurate": 0.0512,
                "saves_inside_box": 0.0796,
                "possession_lost": 0.1536,
                "duels_won": 0.0284,
                "duels_lost": 0.0171,
                "total_contest": 0.0284,
                "won_contest": 0.0171,
                "fouls": 0.0114,
                "fouls_drawn": 0.0057,
                "total_own_half_passes": 1.3083,
                "accurate_own_half_passes": 1.0239,
                "bench_appearance_probability": 0.142,
                "bench_expected_minutes": 5.12
              },
              "params": {
                "expected_minutes": 5.12,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0569,
                "appearance_probability": 0.142
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1934,
                "goals_prevented": 0.0341,
                "rating": 7.0,
                "minutes": 5.12,
                "total_pass": 1.6497,
                "accurate_pass": 1.2515,
                "total_long_balls": 0.5688,
                "accurate_long_balls": 0.2844,
                "touches": 1.9341,
                "clearances": 0.0626,
                "ball_recovery": 0.0796,
                "high_claims": 0.0398,
                "punches": 0.0228,
                "aerial_won": 0.0455,
                "sweeper_actions": 0.0796,
                "sweeper_accurate": 0.0512,
                "saves_inside_box": 0.0796,
                "possession_lost": 0.1536,
                "duels_won": 0.0284,
                "duels_lost": 0.0171,
                "total_contest": 0.0284,
                "won_contest": 0.0171,
                "fouls": 0.0114,
                "fouls_drawn": 0.0057,
                "total_own_half_passes": 1.3083,
                "accurate_own_half_passes": 1.0239,
                "bench_appearance_probability": 0.142,
                "bench_expected_minutes": 5.12
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.1934,
                "goals_prevented": 0.0341,
                "rating": 7.0,
                "minutes": 5.12,
                "total_pass": 1.6497,
                "accurate_pass": 1.2515,
                "total_long_balls": 0.5688,
                "accurate_long_balls": 0.2844,
                "touches": 1.9341,
                "clearances": 0.0626,
                "ball_recovery": 0.0796,
                "high_claims": 0.0398,
                "punches": 0.0228,
                "aerial_won": 0.0455,
                "sweeper_actions": 0.0796,
                "sweeper_accurate": 0.0512,
                "saves_inside_box": 0.0796,
                "possession_lost": 0.1536,
                "duels_won": 0.0284,
                "duels_lost": 0.0171,
                "total_contest": 0.0284,
                "won_contest": 0.0171,
                "fouls": 0.0114,
                "fouls_drawn": 0.0057,
                "total_own_half_passes": 1.3083,
                "accurate_own_half_passes": 1.0239,
                "bench_appearance_probability": 0.142,
                "bench_expected_minutes": 5.12,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.142,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 70.0)",
              "stats": {
                "saves": 0.1934,
                "goals_prevented": 0.0341,
                "rating": 7.0,
                "minutes": 5.12,
                "total_pass": 1.6497,
                "accurate_pass": 1.2515,
                "total_long_balls": 0.5688,
                "accurate_long_balls": 0.2844,
                "touches": 1.9341,
                "clearances": 0.0626,
                "ball_recovery": 0.0796,
                "high_claims": 0.0398,
                "punches": 0.0228,
                "aerial_won": 0.0455,
                "sweeper_actions": 0.0796,
                "sweeper_accurate": 0.0512,
                "saves_inside_box": 0.0796,
                "possession_lost": 0.1536,
                "duels_won": 0.0284,
                "duels_lost": 0.0171,
                "total_contest": 0.0284,
                "won_contest": 0.0171,
                "fouls": 0.0114,
                "fouls_drawn": 0.0057,
                "total_own_half_passes": 1.3083,
                "accurate_own_half_passes": 1.0239,
                "bench_appearance_probability": 0.142,
                "bench_expected_minutes": 5.12,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 70.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4769,
                "fifa_rank": 5567.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            }
          ]
        },
        "Tino Livramento": {
          "player_id": 980634,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 2,
          "height": 181,
          "market_value": 44000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7295,
            "minutes": 15,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 2.8534,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0019,
            "expected_assists": 0.0123,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 23,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.364,
            "bench_expected_minutes": 15.01,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 32,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0074,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14025040,
              "match_date": "2026-04-18",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 74,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.026,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 37,
                "tackles": 2,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023999,
              "match_date": "2026-04-12",
              "home_team": "Crystal Palace",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0302,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 48,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 25,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0145,
                "expected_assists": 0.0518,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 9,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023990,
              "match_date": "2026-03-14",
              "home_team": "Chelsea",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2058,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 20,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025052,
              "match_date": "2026-01-07",
              "home_team": "Newcastle United",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0322,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 32,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025288,
              "match_date": "2026-01-04",
              "home_team": "Newcastle United",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 27,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 11,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025207,
              "match_date": "2025-12-14",
              "home_team": "Sunderland",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.04,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 42,
                "key_pass": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025174,
              "match_date": "2025-12-06",
              "home_team": "Newcastle United",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.068,
                "total_shots": 0,
                "total_pass": 70,
                "accurate_pass": 65,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 3,
                "duels_won": 6,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1311,
            "combined_rank_score": 568.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 611.0,
            "sofascore_rating": 6.7765,
            "sofascore_appearances": 17.0,
            "fifa_rank": 526.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7295,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tino Livramento",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Son Heung Min",
                  "ranking": 1306
                },
                {
                  "player_name": "Bazoumana Touré",
                  "ranking": 1307
                },
                {
                  "player_name": "Emil Audero",
                  "ranking": 1308
                },
                {
                  "player_name": "Lukáš Haraslín",
                  "ranking": 1309
                },
                {
                  "player_name": "Marko Dmitrović",
                  "ranking": 1310
                }
              ],
              "lower": [
                {
                  "player_name": "Yéremy Pino",
                  "ranking": 1312
                },
                {
                  "player_name": "Cecilio Waterman",
                  "ranking": 1313
                },
                {
                  "player_name": "Javier Guerra",
                  "ranking": 1314
                },
                {
                  "player_name": "Pedro Gonçalves",
                  "ranking": 1315
                },
                {
                  "player_name": "Matheus Cunha",
                  "ranking": 1316
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 19,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 19,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 15.008988063086047,
            "bench_appearance_prob": 0.3640449119584567,
            "market_value_adjustment": 1.0185,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (19 historical appearances) to 15.0 expected mins (appearance prob 0.36)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.2755,
                "tackles": 0.6608,
                "tackles_won": 0.3932,
                "clearances": 0.804,
                "aerial_won": 0.2911,
                "total_shots": 0.1306,
                "rating": 6.7295,
                "minutes": 22.99,
                "total_pass": 14.7456,
                "accurate_pass": 12.5239,
                "duels_won": 1.5708,
                "total_long_balls": 1.2696,
                "accurate_long_balls": 0.3948,
                "total_own_half_passes": 6.9415,
                "accurate_own_half_passes": 6.3863,
                "total_opp_half_passes": 7.8041,
                "accurate_opp_half_passes": 6.1377,
                "crosses_total": 1.7246,
                "crosses_accurate": 0.526,
                "touches": 22.5597,
                "possession_lost": 4.2913,
                "dispossessed": 0.0,
                "duels_lost": 0.9752,
                "aerial_lost": 0.1408,
                "total_contest": 0.8171,
                "won_contest": 0.4471,
                "ball_recovery": 2.5777,
                "challenges_lost": 0.1948,
                "fouls": 0.2696,
                "fouls_drawn": 0.3896,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0028,
                "expected_assists": 0.0185,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.0479,
                "total_progression": 34.022,
                "progressive_carries": 0.6375,
                "key_pass": 0.3063,
                "shots_off_target": 0.1306
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.1572,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1336,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Bournemouth",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1136,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0965,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Sunderland",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.082,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0697,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-01-07",
                    "opponent": "Leeds United",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0593,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-01-04",
                    "opponent": "Crystal Palace",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0504,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2025-12-14",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0428,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2025-12-06",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0364,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 19.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.6942,
                  "aerialWon": 0.5652,
                  "totalClearance_p90": 2.5117,
                  "totalTackle": 1.0885,
                  "totalPass": 29.3931
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.27550724148750305,
                    "model_output": 0.2755,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4936
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0487
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0104
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0078
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0076
                        }
                      ],
                      "others": -0.0293,
                      "total": 0.2755,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.857491
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.14388
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.033669
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.025217
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.024723
                        }
                      ],
                      "others_margin": -0.100596
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.6608363389968872,
                    "model_output": 0.6608,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.764
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0187
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0164
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0165
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0155
                        }
                      ],
                      "others": 0.0012,
                      "total": 0.6608,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.794391
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.030169
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.026473
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.026018
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.023754
                        }
                      ],
                      "others_margin": 0.001977
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.39315399527549744,
                    "model_output": 0.3932,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.45
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0153
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0098
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0086
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.008
                        }
                      ],
                      "others": 0.0145,
                      "total": 0.3932,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.748133
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.038699
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.025499
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.023034
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.021253
                        }
                      ],
                      "others_margin": 0.037971
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.8040452003479004,
                    "model_output": 0.804,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0851
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2656
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0966
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0593
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0424
                        }
                      ],
                      "others": -0.0984,
                      "total": 0.804,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.926692
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.216123
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.091833
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.060827
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.045906
                        }
                      ],
                      "others_margin": -0.115502
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.29113641381263733,
                    "model_output": 0.2911,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8192
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1644
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0295
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0173
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0153
                        }
                      ],
                      "others": -0.0758,
                      "total": 0.2911,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.89841
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.345565
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.076947
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.04792
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.042468
                        }
                      ],
                      "others_margin": -0.231143
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.13063101470470428,
                    "model_output": 0.1306,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2281
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0779
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0131
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0095
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0072
                        }
                      ],
                      "others": -0.0191,
                      "total": 0.1306,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.228092
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.077869
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.013137
                        },
                        {
                          "name": "rating",
                          "margin": -0.009468
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.007192
                        }
                      ],
                      "others_margin": -0.019127
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.729485988616943,
                    "model_output": 6.7295,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": 0.0351
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.023
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0195
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0143
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0108
                        }
                      ],
                      "others": -0.0447,
                      "total": 6.7295,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.03508
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.023048
                        },
                        {
                          "name": "rating",
                          "margin": -0.019518
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.014344
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.010784
                        }
                      ],
                      "others_margin": -0.044596
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 19,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0185, quality 0.800)",
              "stats": {
                "interceptions": 0.2806,
                "tackles": 0.6731,
                "tackles_won": 0.4004,
                "clearances": 0.8189,
                "aerial_won": 0.2965,
                "total_shots": 0.133,
                "rating": 6.7295,
                "minutes": 22.99,
                "total_pass": 15.0184,
                "accurate_pass": 12.7556,
                "duels_won": 1.5999,
                "total_long_balls": 1.2931,
                "accurate_long_balls": 0.4021,
                "total_own_half_passes": 7.0699,
                "accurate_own_half_passes": 6.5044,
                "total_opp_half_passes": 7.9485,
                "accurate_opp_half_passes": 6.2512,
                "crosses_total": 1.7565,
                "crosses_accurate": 0.5357,
                "touches": 22.9771,
                "possession_lost": 4.3707,
                "dispossessed": 0.0,
                "duels_lost": 0.9932,
                "aerial_lost": 0.1434,
                "total_contest": 0.8322,
                "won_contest": 0.4554,
                "ball_recovery": 2.6254,
                "challenges_lost": 0.1984,
                "fouls": 0.2746,
                "fouls_drawn": 0.3968,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0029,
                "expected_assists": 0.0188,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.1598,
                "total_progression": 34.6514,
                "progressive_carries": 0.6493,
                "key_pass": 0.312,
                "shots_off_target": 0.133
              },
              "params": {
                "market_value_eur": 44000000,
                "quality_factor": 0.8002,
                "boost_factor": 1.0185,
                "reference_quality": 0.505,
                "history_matches": 19,
                "history_shrink": 0.2083,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.0 to 15.0 expected minutes (appearance prob 0.36)",
              "stats": {
                "interceptions": 0.1832,
                "tackles": 0.4394,
                "tackles_won": 0.2614,
                "clearances": 0.5346,
                "aerial_won": 0.1936,
                "total_shots": 0.0868,
                "rating": 6.7295,
                "minutes": 15.01,
                "total_pass": 9.8047,
                "accurate_pass": 8.3275,
                "duels_won": 1.0445,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.2625,
                "total_own_half_passes": 4.6156,
                "accurate_own_half_passes": 4.2464,
                "total_opp_half_passes": 5.1892,
                "accurate_opp_half_passes": 4.0811,
                "crosses_total": 1.1467,
                "crosses_accurate": 0.3497,
                "touches": 15.0006,
                "possession_lost": 2.8534,
                "dispossessed": 0.0,
                "duels_lost": 0.6484,
                "aerial_lost": 0.1434,
                "total_contest": 0.5433,
                "won_contest": 0.2973,
                "ball_recovery": 1.714,
                "challenges_lost": 0.1984,
                "fouls": 0.1793,
                "fouls_drawn": 0.2591,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0019,
                "expected_assists": 0.0123,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.0214,
                "total_progression": 22.6221,
                "progressive_carries": 0.4239,
                "key_pass": 0.2037,
                "shots_off_target": 0.0868,
                "bench_appearance_probability": 0.364,
                "bench_expected_minutes": 15.01
              },
              "params": {
                "expected_minutes": 15.01,
                "projection_minutes": 22.99,
                "minutes_scale": 0.6528,
                "appearance_probability": 0.364
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1832,
                "tackles": 0.4394,
                "tackles_won": 0.2614,
                "clearances": 0.5346,
                "aerial_won": 0.1936,
                "total_shots": 0.0868,
                "rating": 6.7295,
                "minutes": 15.01,
                "total_pass": 9.8047,
                "accurate_pass": 8.3275,
                "duels_won": 1.0445,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.2625,
                "total_own_half_passes": 4.6156,
                "accurate_own_half_passes": 4.2464,
                "total_opp_half_passes": 5.1892,
                "accurate_opp_half_passes": 4.0811,
                "crosses_total": 1.1467,
                "crosses_accurate": 0.3497,
                "touches": 15.0006,
                "possession_lost": 2.8534,
                "dispossessed": 0.0,
                "duels_lost": 0.6484,
                "aerial_lost": 0.1434,
                "total_contest": 0.5433,
                "won_contest": 0.2973,
                "ball_recovery": 1.714,
                "challenges_lost": 0.1984,
                "fouls": 0.1793,
                "fouls_drawn": 0.2591,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0019,
                "expected_assists": 0.0123,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.0214,
                "total_progression": 22.6221,
                "progressive_carries": 0.4239,
                "key_pass": 0.2037,
                "shots_off_target": 0.0868,
                "bench_appearance_probability": 0.364,
                "bench_expected_minutes": 15.01
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.1832,
                "tackles": 0.4394,
                "tackles_won": 0.2614,
                "clearances": 0.5346,
                "aerial_won": 0.1936,
                "total_shots": 0.0868,
                "rating": 6.7295,
                "minutes": 15.01,
                "total_pass": 9.8047,
                "accurate_pass": 8.3275,
                "duels_won": 1.0445,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.2625,
                "total_own_half_passes": 4.6156,
                "accurate_own_half_passes": 4.2464,
                "total_opp_half_passes": 5.1892,
                "accurate_opp_half_passes": 4.0811,
                "crosses_total": 1.1467,
                "crosses_accurate": 0.3497,
                "touches": 15.0006,
                "possession_lost": 2.8534,
                "dispossessed": 0.0,
                "duels_lost": 0.6484,
                "aerial_lost": 0.1434,
                "total_contest": 0.5433,
                "won_contest": 0.2973,
                "ball_recovery": 1.714,
                "challenges_lost": 0.1984,
                "fouls": 0.1793,
                "fouls_drawn": 0.2591,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0019,
                "expected_assists": 0.0123,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.0214,
                "total_progression": 22.6221,
                "progressive_carries": 0.4239,
                "key_pass": 0.2037,
                "shots_off_target": 0.0868,
                "bench_appearance_probability": 0.364,
                "bench_expected_minutes": 15.01,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.364,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 81.0)",
              "stats": {
                "interceptions": 0.1832,
                "tackles": 0.4394,
                "tackles_won": 0.2614,
                "clearances": 0.5346,
                "aerial_won": 0.1936,
                "total_shots": 0.0868,
                "rating": 6.7295,
                "minutes": 15.01,
                "total_pass": 9.8047,
                "accurate_pass": 8.3275,
                "duels_won": 1.0445,
                "total_long_balls": 0.8442,
                "accurate_long_balls": 0.2625,
                "total_own_half_passes": 4.6156,
                "accurate_own_half_passes": 4.2464,
                "total_opp_half_passes": 5.1892,
                "accurate_opp_half_passes": 4.0811,
                "crosses_total": 1.1467,
                "crosses_accurate": 0.3497,
                "touches": 15.0006,
                "possession_lost": 2.8534,
                "dispossessed": 0.0,
                "duels_lost": 0.6484,
                "aerial_lost": 0.1434,
                "total_contest": 0.5433,
                "won_contest": 0.2973,
                "ball_recovery": 1.714,
                "challenges_lost": 0.1984,
                "fouls": 0.1793,
                "fouls_drawn": 0.2591,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0019,
                "expected_assists": 0.0123,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.0214,
                "total_progression": 22.6221,
                "progressive_carries": 0.4239,
                "key_pass": 0.2037,
                "shots_off_target": 0.0868,
                "bench_appearance_probability": 0.364,
                "bench_expected_minutes": 15.01,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1311,
                "fifa_rank": 526.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            }
          ]
        },
        "Amar Dedić": {
          "player_id": 1102791,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 37,
          "height": 180,
          "market_value": 29000000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7398,
            "minutes": 15,
            "total_pass": 25,
            "accurate_pass": 21,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 43,
            "possession_lost": 8.6865,
            "dispossessed": 0.3245,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.1856,
            "assists": 0,
            "expected_goals": 0.0298,
            "expected_assists": 0.0175,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 9,
            "total_progression": 56,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.239,
            "bench_expected_minutes": 14.65,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 31,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0216,
                "expected_assists": 0.0176,
                "total_shots": 1,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 58,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0031,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 22,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1106,
                "expected_assists": 0.0226,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 41,
                "accurate_pass": 33,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0567,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 25,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0049,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 18,
                "tackles": 2,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3193,
            "combined_rank_score": 1153.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2015.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7398,
            "source_file": "data/player_rankings.csv",
            "player_name": "Amar Dedić",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alexsandro",
                  "ranking": 3188
                },
                {
                  "player_name": "Mërgim Vojvoda",
                  "ranking": 3189
                },
                {
                  "player_name": "Sorba Thomas",
                  "ranking": 3190
                },
                {
                  "player_name": "Samson Baidoo",
                  "ranking": 3191
                },
                {
                  "player_name": "Guéla Doué",
                  "ranking": 3192
                }
              ],
              "lower": [
                {
                  "player_name": "Taylor Harwood-Bellis",
                  "ranking": 3194
                },
                {
                  "player_name": "Saïd El Mala",
                  "ranking": 3195
                },
                {
                  "player_name": "Fran García",
                  "ranking": 3196
                },
                {
                  "player_name": "Rômulo",
                  "ranking": 3197
                },
                {
                  "player_name": "David Zima",
                  "ranking": 3198
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.52,
          "history_matches": 4,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 4,
            "data_confidence": 0.52,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.65159379857936,
            "bench_appearance_prob": 0.239,
            "market_value_adjustment": 1.0342,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.5,
              "prior_reliability": 0.1333
            },
            "rationale": "Bench projection scaled from XGBoost D_service (4 historical appearances) to 14.7 expected mins (appearance prob 0.24); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3972,
                "tackles": 0.6158,
                "tackles_won": 0.4199,
                "clearances": 0.985,
                "aerial_won": 0.4352,
                "total_shots": 0.3271,
                "rating": 6.7398,
                "minutes": 18.0,
                "total_pass": 29.6991,
                "accurate_pass": 24.8434,
                "duels_won": 4.9129,
                "total_long_balls": 2.114,
                "accurate_long_balls": 0.7602,
                "total_own_half_passes": 15.6559,
                "accurate_own_half_passes": 14.3021,
                "total_opp_half_passes": 14.0432,
                "accurate_opp_half_passes": 10.5413,
                "crosses_total": 0.9869,
                "crosses_accurate": 0.7202,
                "touches": 51.5366,
                "possession_lost": 10.3188,
                "dispossessed": 0.3138,
                "duels_lost": 5.0191,
                "aerial_lost": 1.6276,
                "total_contest": 2.7262,
                "won_contest": 1.0269,
                "ball_recovery": 3.8413,
                "challenges_lost": 0.0,
                "fouls": 1.3784,
                "fouls_drawn": 0.8789,
                "blocks": 0.4194,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2267,
                "assist_rate": 0.2267,
                "expected_goals": 0.0354,
                "expected_assists": 0.0208,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.7284,
                "total_progression": 66.4684,
                "progressive_carries": 1.4124,
                "key_pass": 0.4535,
                "shots_off_target": 0.3271
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:05:26.369274+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.3138,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2667,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2267,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1927,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.0047,
                  "aerialWon": 1.0,
                  "totalClearance_p90": 3.5241,
                  "totalTackle": 2.0071,
                  "totalPass": 29.6991
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.39717626571655273,
                    "model_output": 0.3972,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4619
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0347
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0092
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0078
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0068
                        }
                      ],
                      "others": 0.0127,
                      "total": 0.3972,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.773967
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.091799
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.02506
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.020834
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.017733
                        }
                      ],
                      "others_margin": 0.032766
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.6158174276351929,
                    "model_output": 0.6158,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2622
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0638
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0451
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.043
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0317
                      }
                    ],
                    "decomposition": {
                      "base": 1.3939,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7779
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0317
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0195
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0192
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0135
                        }
                      ],
                      "others": 0.0063,
                      "total": 0.6158,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.816715
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.052782
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.03284
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.03125
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.021833
                        }
                      ],
                      "others_margin": 0.010347
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.4199226498603821,
                    "model_output": 0.4199,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2392
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.06
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0398
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.8544,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4568
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0192
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0182
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0121
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.011
                        }
                      ],
                      "others": 0.0002,
                      "total": 0.4199,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.764935
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.049628
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.047091
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.029983
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.026624
                        }
                      ],
                      "others_margin": 0.000593
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.9850148558616638,
                    "model_output": 0.985,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3045
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1682
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0854
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0285
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0201
                      }
                    ],
                    "decomposition": {
                      "base": 3.4514,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.174
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0988
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0691
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0434
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0277
                        }
                      ],
                      "others": -0.0534,
                      "total": 0.985,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.993968
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.080533
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.060445
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.039934
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.026289
                        }
                      ],
                      "others_margin": -0.052713
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.4352020025253296,
                    "model_output": 0.4352,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1616
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1408
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0969
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0424
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0269
                      }
                    ],
                    "decomposition": {
                      "base": 1.382,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7998
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0811
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0408
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0255
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0223
                        }
                      ],
                      "others": -0.0589,
                      "total": 0.4352,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.86442
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.150049
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.078293
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.048197
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.044203
                        }
                      ],
                      "others_margin": -0.126923
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3270629048347473,
                    "model_output": 0.3271,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1182
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0615
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0311
                      },
                      {
                        "name": "rating",
                        "importance": 0.0298
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.0297
                      }
                    ],
                    "decomposition": {
                      "base": 0.4711,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2366
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0415
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0399
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0359
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0354
                        }
                      ],
                      "others": 0.0107,
                      "total": 0.3271,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.236588
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.04149
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.039866
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.035945
                        },
                        {
                          "name": "rating",
                          "margin": -0.035381
                        }
                      ],
                      "others_margin": 0.010599
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.739768981933594,
                    "model_output": 6.7398,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0688
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0582
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0551
                      },
                      {
                        "name": "touches",
                        "importance": 0.037
                      },
                      {
                        "name": "rating",
                        "importance": 0.0327
                      }
                    ],
                    "decomposition": {
                      "base": 6.7851,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0259
                        },
                        {
                          "name": "rating",
                          "contribution": -0.022
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0164
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0135
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.011
                        }
                      ],
                      "others": -0.0353,
                      "total": 6.7398,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.025916
                        },
                        {
                          "name": "rating",
                          "margin": -0.021974
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.016396
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.013455
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.011013
                        }
                      ],
                      "others_margin": -0.035349
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0342, quality 0.710)",
              "stats": {
                "interceptions": 0.4108,
                "tackles": 0.6369,
                "tackles_won": 0.4343,
                "clearances": 1.0187,
                "aerial_won": 0.4501,
                "total_shots": 0.3383,
                "rating": 6.7398,
                "minutes": 18.0,
                "total_pass": 30.7148,
                "accurate_pass": 25.693,
                "duels_won": 5.0809,
                "total_long_balls": 2.1863,
                "accurate_long_balls": 0.7862,
                "total_own_half_passes": 16.1913,
                "accurate_own_half_passes": 14.7912,
                "total_opp_half_passes": 14.5235,
                "accurate_opp_half_passes": 10.9018,
                "crosses_total": 1.0207,
                "crosses_accurate": 0.7448,
                "touches": 53.2992,
                "possession_lost": 10.6717,
                "dispossessed": 0.3245,
                "duels_lost": 5.1908,
                "aerial_lost": 1.6833,
                "total_contest": 2.8194,
                "won_contest": 1.062,
                "ball_recovery": 3.9727,
                "challenges_lost": 0.0,
                "fouls": 1.4255,
                "fouls_drawn": 0.909,
                "blocks": 0.4337,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2345,
                "assist_rate": 0.2345,
                "expected_goals": 0.0366,
                "expected_assists": 0.0215,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.0953,
                "total_progression": 68.7416,
                "progressive_carries": 1.4607,
                "key_pass": 0.469,
                "shots_off_target": 0.3383
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0342,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0481)",
              "stats": {
                "interceptions": 0.391,
                "tackles": 0.6369,
                "tackles_won": 0.4182,
                "clearances": 1.0187,
                "aerial_won": 0.4501,
                "total_shots": 0.3268,
                "rating": 6.7398,
                "minutes": 18.0,
                "total_pass": 30.7148,
                "accurate_pass": 25.693,
                "duels_won": 5.0809,
                "total_long_balls": 2.1863,
                "accurate_long_balls": 0.7862,
                "total_own_half_passes": 16.1913,
                "accurate_own_half_passes": 14.7912,
                "total_opp_half_passes": 14.5235,
                "accurate_opp_half_passes": 10.9018,
                "crosses_total": 0.9812,
                "crosses_accurate": 0.7448,
                "touches": 53.2992,
                "possession_lost": 10.6717,
                "dispossessed": 0.3245,
                "duels_lost": 5.1908,
                "aerial_lost": 1.6833,
                "total_contest": 2.8194,
                "won_contest": 1.062,
                "ball_recovery": 3.9727,
                "challenges_lost": 0.0,
                "fouls": 1.3713,
                "fouls_drawn": 0.8797,
                "blocks": 0.4337,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.228,
                "assist_rate": 0.228,
                "expected_goals": 0.0366,
                "expected_assists": 0.0215,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.0953,
                "total_progression": 68.7416,
                "progressive_carries": 1.4607,
                "key_pass": 0.469,
                "shots_off_target": 0.3383
              },
              "params": {
                "blend_weight": 0.0481,
                "history_matches": 4,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.4255,
                  "after": 1.3713
                },
                {
                  "stat": "totalCross",
                  "before": 1.0207,
                  "after": 0.9812
                },
                {
                  "stat": "wasFouled",
                  "before": 0.909,
                  "after": 0.8797
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.4108,
                  "after": 0.391
                },
                {
                  "stat": "wonTackle",
                  "before": 0.4343,
                  "after": 0.4182
                },
                {
                  "stat": "totalShots",
                  "before": 0.3383,
                  "after": 0.3268
                },
                {
                  "stat": "goalAssist",
                  "before": 0.2345,
                  "after": 0.228
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.0 to 14.7 expected minutes (appearance prob 0.24)",
              "stats": {
                "interceptions": 0.3183,
                "tackles": 0.5184,
                "tackles_won": 0.3404,
                "clearances": 0.8292,
                "aerial_won": 0.3664,
                "total_shots": 0.2754,
                "rating": 6.7398,
                "minutes": 14.65,
                "total_pass": 25.0012,
                "accurate_pass": 20.9135,
                "duels_won": 4.1357,
                "total_long_balls": 1.7796,
                "accurate_long_balls": 0.6399,
                "total_own_half_passes": 13.1794,
                "accurate_own_half_passes": 12.0397,
                "total_opp_half_passes": 11.8218,
                "accurate_opp_half_passes": 8.8738,
                "crosses_total": 0.7987,
                "crosses_accurate": 0.6063,
                "touches": 43.3843,
                "possession_lost": 8.6865,
                "dispossessed": 0.3245,
                "duels_lost": 4.2252,
                "aerial_lost": 1.6833,
                "total_contest": 2.2949,
                "won_contest": 0.8644,
                "ball_recovery": 3.2337,
                "challenges_lost": 0.0,
                "fouls": 1.1162,
                "fouls_drawn": 0.7161,
                "blocks": 0.353,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1856,
                "assist_rate": 0.1856,
                "expected_goals": 0.0298,
                "expected_assists": 0.0175,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0313,
                "total_progression": 55.9541,
                "progressive_carries": 1.189,
                "key_pass": 0.3818,
                "shots_off_target": 0.2754,
                "bench_appearance_probability": 0.239,
                "bench_expected_minutes": 14.65
              },
              "params": {
                "expected_minutes": 14.65,
                "projection_minutes": 18.0,
                "minutes_scale": 0.814,
                "appearance_probability": 0.239
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3183,
                "tackles": 0.5184,
                "tackles_won": 0.3404,
                "clearances": 0.8292,
                "aerial_won": 0.3664,
                "total_shots": 0.2754,
                "rating": 6.7398,
                "minutes": 14.65,
                "total_pass": 25.0012,
                "accurate_pass": 20.9135,
                "duels_won": 4.1357,
                "total_long_balls": 1.7796,
                "accurate_long_balls": 0.6399,
                "total_own_half_passes": 13.1794,
                "accurate_own_half_passes": 12.0397,
                "total_opp_half_passes": 11.8218,
                "accurate_opp_half_passes": 8.8738,
                "crosses_total": 0.7987,
                "crosses_accurate": 0.6063,
                "touches": 43.3843,
                "possession_lost": 8.6865,
                "dispossessed": 0.3245,
                "duels_lost": 4.2252,
                "aerial_lost": 1.6833,
                "total_contest": 2.2949,
                "won_contest": 0.8644,
                "ball_recovery": 3.2337,
                "challenges_lost": 0.0,
                "fouls": 1.1162,
                "fouls_drawn": 0.7161,
                "blocks": 0.353,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1856,
                "assist_rate": 0.1856,
                "expected_goals": 0.0298,
                "expected_assists": 0.0175,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0313,
                "total_progression": 55.9541,
                "progressive_carries": 1.189,
                "key_pass": 0.3818,
                "shots_off_target": 0.2754,
                "bench_appearance_probability": 0.239,
                "bench_expected_minutes": 14.65
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.3183,
                "tackles": 0.5184,
                "tackles_won": 0.3404,
                "clearances": 0.8292,
                "aerial_won": 0.3664,
                "total_shots": 0.2754,
                "rating": 6.7398,
                "minutes": 14.65,
                "total_pass": 25.0012,
                "accurate_pass": 20.9135,
                "duels_won": 4.1357,
                "total_long_balls": 1.7796,
                "accurate_long_balls": 0.6399,
                "total_own_half_passes": 13.1794,
                "accurate_own_half_passes": 12.0397,
                "total_opp_half_passes": 11.8218,
                "accurate_opp_half_passes": 8.8738,
                "crosses_total": 0.7987,
                "crosses_accurate": 0.6063,
                "touches": 43.3843,
                "possession_lost": 8.6865,
                "dispossessed": 0.3245,
                "duels_lost": 4.2252,
                "aerial_lost": 1.6833,
                "total_contest": 2.2949,
                "won_contest": 0.8644,
                "ball_recovery": 3.2337,
                "challenges_lost": 0.0,
                "fouls": 1.1162,
                "fouls_drawn": 0.7161,
                "blocks": 0.353,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1856,
                "assists": 0,
                "expected_goals": 0.0298,
                "expected_assists": 0.0175,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0313,
                "total_progression": 55.9541,
                "progressive_carries": 1.189,
                "key_pass": 0.3818,
                "shots_off_target": 0.2754,
                "bench_appearance_probability": 0.239,
                "bench_expected_minutes": 14.65,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.239,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 0.3183,
                "tackles": 0.5184,
                "tackles_won": 0.3404,
                "clearances": 0.8292,
                "aerial_won": 0.3664,
                "total_shots": 0.2754,
                "rating": 6.7398,
                "minutes": 14.65,
                "total_pass": 25.0012,
                "accurate_pass": 20.9135,
                "duels_won": 4.1357,
                "total_long_balls": 1.7796,
                "accurate_long_balls": 0.6399,
                "total_own_half_passes": 13.1794,
                "accurate_own_half_passes": 12.0397,
                "total_opp_half_passes": 11.8218,
                "accurate_opp_half_passes": 8.8738,
                "crosses_total": 0.7987,
                "crosses_accurate": 0.6063,
                "touches": 43.3843,
                "possession_lost": 8.6865,
                "dispossessed": 0.3245,
                "duels_lost": 4.2252,
                "aerial_lost": 1.6833,
                "total_contest": 2.2949,
                "won_contest": 0.8644,
                "ball_recovery": 3.2337,
                "challenges_lost": 0.0,
                "fouls": 1.1162,
                "fouls_drawn": 0.7161,
                "blocks": 0.353,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1856,
                "assists": 0,
                "expected_goals": 0.0298,
                "expected_assists": 0.0175,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0313,
                "total_progression": 55.9541,
                "progressive_carries": 1.189,
                "key_pass": 0.3818,
                "shots_off_target": 0.2754,
                "bench_appearance_probability": 0.239,
                "bench_expected_minutes": 14.65,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3193,
                "fifa_rank": 2015.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Aladji Bamba": {
          "player_id": 1868591,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 194,
          "market_value": 23000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0185,
            "assist_rate": 0.0297,
            "assists": 0,
            "expected_goals": 0.0174,
            "goal_rate": 0.0425,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.6426,
            "minutes": 19,
            "total_pass": 3,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 2.075,
            "dispossessed": 0.34,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.71,
            "bench_expected_minutes": 18.53,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0172,
            "projected_assists": 0,
            "assist_probability": 0.0183,
            "finishing_factor": 1.25,
            "creation_factor": 1.1967,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 10,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4363,
            "combined_rank_score": 2376.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 3930.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6426,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aladji Bamba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Hugo Lloris",
                  "ranking": 4358
                },
                {
                  "player_name": "Roman Bürki",
                  "ranking": 4359
                },
                {
                  "player_name": "Andy Nájar",
                  "ranking": 4360
                },
                {
                  "player_name": "Goduine Koyalipou",
                  "ranking": 4361
                },
                {
                  "player_name": "Jonathan Bamba",
                  "ranking": 4362
                }
              ],
              "lower": [
                {
                  "player_name": "Sean Steur",
                  "ranking": 4364
                },
                {
                  "player_name": "Guilherme",
                  "ranking": 4365
                },
                {
                  "player_name": "Carlos González",
                  "ranking": 4366
                },
                {
                  "player_name": "Brian White",
                  "ranking": 4367
                },
                {
                  "player_name": "Pavel Bucha",
                  "ranking": 4368
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.439,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.439,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.53,
            "bench_appearance_prob": 0.71,
            "market_value_adjustment": 1.029,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (3 historical appearances) to 18.5 expected mins (appearance prob 0.71); FBref playing time empirical prior: 1.0 sub appearances, 15.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2059,
                "expected_assists": 0.0124,
                "assists": 0.0223,
                "assist_rate": 0.0223,
                "expected_goals": 0.0148,
                "goals": 0.032,
                "goal_rate": 0.032,
                "shots_on_target": 0.0745,
                "total_shots": 0.2873,
                "rating": 6.6426,
                "minutes": 14.27,
                "total_pass": 2.38,
                "accurate_pass": 2.0496,
                "duels_won": 1.6696,
                "total_long_balls": 0.3304,
                "accurate_long_balls": 0.3304,
                "total_own_half_passes": 1.0,
                "accurate_own_half_passes": 1.0,
                "total_opp_half_passes": 1.38,
                "accurate_opp_half_passes": 1.0496,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.38,
                "possession_lost": 1.553,
                "dispossessed": 0.3304,
                "duels_lost": 1.2721,
                "aerial_won": 0.6696,
                "aerial_lost": 0.2809,
                "interceptions": 0.0,
                "tackles_won": 0.6113,
                "tackles": 1.0,
                "clearances": 1.0583,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3304,
                "fouls": 0.3304,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1079,
                "total_progression": 0.8684,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2128
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.0,
                  "creative_index": 0.0001,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.0002,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.20588497817516327,
                    "model_output": 0.2059,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.444
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0466
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0415
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0337
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.02
                        }
                      ],
                      "others": -0.0945,
                      "total": 0.2059,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.695074
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.111401
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.110825
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.099964
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.064437
                        }
                      ],
                      "others_margin": -0.377922
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.012422285042703152,
                    "model_output": 0.0124,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0388
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0115
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0082
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0039
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0016
                        }
                      ],
                      "others": -0.0094,
                      "total": 0.0124,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.601488
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.279572
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.261015
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.153566
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.071557
                        }
                      ],
                      "others_margin": -0.565017
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.022341547533869743,
                    "model_output": 0.0223,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0222
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0131
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0071
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0055
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.0223,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.302055
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.233807
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.152436
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.138101
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.081019
                        }
                      ],
                      "others_margin": -0.431482
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.014781324192881584,
                    "model_output": 0.0148,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0392
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0196
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.01
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0044
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0022
                        }
                      ],
                      "others": -0.0086,
                      "total": 0.0148,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.535823
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.437625
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.330739
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.189907
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.098758
                        }
                      ],
                      "others_margin": -0.459138
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.031969837844371796,
                    "model_output": 0.032,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0324
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0182
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0089
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0027
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0023
                        }
                      ],
                      "others": -0.0011,
                      "total": 0.032,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.402503
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.327157
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.208286
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.074465
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.065955
                        }
                      ],
                      "others_margin": -0.038183
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.07451626658439636,
                    "model_output": 0.0745,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1445
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0609
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0237
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0174
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0041
                        }
                      ],
                      "others": -0.0071,
                      "total": 0.0745,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.590328
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.414352
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.222998
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.201934
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.050911
                        }
                      ],
                      "others_margin": -0.090997
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.2873208522796631,
                    "model_output": 0.2873,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3546
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2353
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0482
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0305
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0304
                        }
                      ],
                      "others": -0.0042,
                      "total": 0.2873,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.354555
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.235254
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.048228
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.030511
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.030408
                        }
                      ],
                      "others_margin": -0.004188
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.642569541931152,
                    "model_output": 6.6426,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0587
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0427
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0312
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0161
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.0492,
                      "total": 6.6426,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.058667
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.042705
                        },
                        {
                          "name": "rating",
                          "margin": -0.031213
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016093
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.008438
                        }
                      ],
                      "others_margin": -0.049186
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0290, quality 0.660)",
              "stats": {
                "key_pass": 0.2119,
                "expected_assists": 0.0128,
                "assists": 0.023,
                "assist_rate": 0.023,
                "expected_goals": 0.0152,
                "goals": 0.0329,
                "goal_rate": 0.0329,
                "shots_on_target": 0.0767,
                "total_shots": 0.2957,
                "rating": 6.6426,
                "minutes": 14.27,
                "total_pass": 2.449,
                "accurate_pass": 2.109,
                "duels_won": 1.718,
                "total_long_balls": 0.34,
                "accurate_long_balls": 0.34,
                "total_own_half_passes": 1.029,
                "accurate_own_half_passes": 1.029,
                "total_opp_half_passes": 1.42,
                "accurate_opp_half_passes": 1.08,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.565,
                "possession_lost": 1.598,
                "dispossessed": 0.34,
                "duels_lost": 1.309,
                "aerial_won": 0.689,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.629,
                "tackles": 1.029,
                "clearances": 1.089,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.34,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.14,
                "total_progression": 0.8936,
                "progressive_carries": 0.0,
                "shots_off_target": 0.219
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.029,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0054)",
              "stats": {
                "key_pass": 0.2119,
                "expected_assists": 0.0128,
                "assists": 0.0229,
                "assist_rate": 0.0229,
                "expected_goals": 0.0152,
                "goals": 0.0327,
                "goal_rate": 0.0327,
                "shots_on_target": 0.0763,
                "total_shots": 0.2941,
                "rating": 6.6426,
                "minutes": 14.27,
                "total_pass": 2.449,
                "accurate_pass": 2.109,
                "duels_won": 1.718,
                "total_long_balls": 0.34,
                "accurate_long_balls": 0.34,
                "total_own_half_passes": 1.029,
                "accurate_own_half_passes": 1.029,
                "total_opp_half_passes": 1.42,
                "accurate_opp_half_passes": 1.08,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.565,
                "possession_lost": 1.598,
                "dispossessed": 0.34,
                "duels_lost": 1.309,
                "aerial_won": 0.689,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.6299,
                "tackles": 1.029,
                "clearances": 1.089,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.3382,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.14,
                "total_progression": 0.8936,
                "progressive_carries": 0.0,
                "shots_off_target": 0.219
              },
              "params": {
                "blend_weight": 0.0054,
                "history_matches": 3,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1586,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Newcastle"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.3 to 18.5 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0166,
                "assists": 0.0297,
                "assist_rate": 0.0297,
                "expected_goals": 0.0197,
                "goals": 0.0425,
                "goal_rate": 0.0425,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53
              },
              "params": {
                "expected_minutes": 18.53,
                "projection_minutes": 14.27,
                "minutes_scale": 1.2985,
                "appearance_probability": 0.71
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0166,
                "assists": 0.0297,
                "assist_rate": 0.0297,
                "expected_goals": 0.0197,
                "goals": 0.0425,
                "goal_rate": 0.0425,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0166,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0197,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 0.71
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 72.0)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4363,
                "fifa_rank": 3930.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0172,
                "goal_rate": 0.0425,
                "scorer_weight": 0.0217,
                "squad_weight_total": 1.813,
                "weight_share": 0.012,
                "finishing_factor": 1.25,
                "appearance_weight": 0.71,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0183,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0183,
                "assist_rate": 0.0297,
                "provider_weight": 0.0221,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0189,
                "creation_factor": 1.1967,
                "appearance_weight": 0.71,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Sean Steur": {
          "player_id": 1859920,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 14,
          "height": 183,
          "market_value": 21000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0139,
            "assist_rate": 0.0256,
            "assists": 0,
            "expected_goals": 0.0097,
            "goal_rate": 0.0192,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.761,
            "minutes": 21,
            "total_pass": 20,
            "accurate_pass": 18,
            "duels_won": 1,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 23,
            "possession_lost": 2.4134,
            "dispossessed": 0.3966,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 7,
            "total_progression": 29,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.516,
            "bench_expected_minutes": 21.25,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 66,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0324,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 51,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 71,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0295,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 49,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363637,
              "match_date": "2026-09-05",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 13,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 10,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 19,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 8,
                "clearances": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 56,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 22,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4364,
            "combined_rank_score": 2376.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3931.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.761,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sean Steur",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Roman Bürki",
                  "ranking": 4359
                },
                {
                  "player_name": "Andy Nájar",
                  "ranking": 4360
                },
                {
                  "player_name": "Goduine Koyalipou",
                  "ranking": 4361
                },
                {
                  "player_name": "Jonathan Bamba",
                  "ranking": 4362
                },
                {
                  "player_name": "Aladji Bamba",
                  "ranking": 4363
                }
              ],
              "lower": [
                {
                  "player_name": "Guilherme",
                  "ranking": 4365
                },
                {
                  "player_name": "Carlos González",
                  "ranking": 4366
                },
                {
                  "player_name": "Brian White",
                  "ranking": 4367
                },
                {
                  "player_name": "Pavel Bucha",
                  "ranking": 4368
                },
                {
                  "player_name": "Alhassan Yusuf",
                  "ranking": 4369
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.57,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.57,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 21.25,
            "bench_appearance_prob": 0.516,
            "market_value_adjustment": 1.0204,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 20.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0533
            },
            "rationale": "Bench projection scaled from XGBoost M_service (5 historical appearances) to 21.2 expected mins (appearance prob 0.52); FBref playing time empirical prior: 1.0 sub appearances, 20.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3581,
                "expected_assists": 0.0193,
                "assists": 0.0359,
                "assist_rate": 0.0359,
                "expected_goals": 0.0133,
                "goals": 0.0271,
                "goal_rate": 0.0271,
                "shots_on_target": 0.0558,
                "total_shots": 0.1877,
                "rating": 6.761,
                "minutes": 29.94,
                "total_pass": 27.1535,
                "accurate_pass": 24.5986,
                "duels_won": 0.7775,
                "total_long_balls": 2.1079,
                "accurate_long_balls": 1.0,
                "total_own_half_passes": 11.6064,
                "accurate_own_half_passes": 10.8289,
                "total_opp_half_passes": 15.5471,
                "accurate_opp_half_passes": 13.7696,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 31.4363,
                "possession_lost": 3.3324,
                "dispossessed": 0.3887,
                "duels_lost": 1.4966,
                "aerial_won": 0.0,
                "aerial_lost": 0.3887,
                "interceptions": 0.3887,
                "tackles_won": 0.7775,
                "tackles": 0.7775,
                "clearances": 1.5617,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3304,
                "fouls": 0.3887,
                "fouls_drawn": 0.0,
                "blocks": 0.3887,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.2517,
                "total_progression": 39.9874,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1319
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 71.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Bournemouth",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.0,
                  "creative_index": 0.3171,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.0162,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3581393361091614,
                    "model_output": 0.3581,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3685
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.055
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0487
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0325
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0198
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.3581,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.53756
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.112217
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.111323
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.081845
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.053421
                        }
                      ],
                      "others_margin": -0.009653
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.01925063319504261,
                    "model_output": 0.0193,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0363
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0111
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0056,
                      "total": 0.0193,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.550918
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.255394
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.181638
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.172862
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.077292
                        }
                      ],
                      "others_margin": -0.25606
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0359094999730587,
                    "model_output": 0.0359,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0215
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0142
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0036
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.003,
                      "total": 0.0359,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.291103
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.252364
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.089913
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.082266
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.067319
                        }
                      ],
                      "others_margin": -0.081383
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.013302811421453953,
                    "model_output": 0.0133,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0422
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.018
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0097
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0035
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0019
                        }
                      ],
                      "others": -0.0058,
                      "total": 0.0133,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.591959
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.422446
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.332687
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.153111
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.095612
                        }
                      ],
                      "others_margin": -0.364048
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.02707868069410324,
                    "model_output": 0.0271,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0345
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0168
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0104
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0033
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0026,
                      "total": 0.0271,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.436444
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.309595
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.253914
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.097244
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.094692
                        }
                      ],
                      "others_margin": -0.090705
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.05583975836634636,
                    "model_output": 0.0558,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1515
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0579
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0231
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0141
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0185,
                      "total": 0.0558,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63016
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.40898
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.224683
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.167155
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.040287
                        }
                      ],
                      "others_margin": -0.286965
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.18772365152835846,
                    "model_output": 0.1877,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3055
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2436
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0416
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0325
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.029
                        }
                      ],
                      "others": -0.1506,
                      "total": 0.1877,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.305498
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.24362
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.04161
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.032533
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.029043
                        }
                      ],
                      "others_margin": -0.150437
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.760957717895508,
                    "model_output": 6.761,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.098
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0365
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0319
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0213
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0181
                        }
                      ],
                      "others": -0.0189,
                      "total": 6.761,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.097974
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.036541
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.0319
                        },
                        {
                          "name": "rating",
                          "margin": -0.021301
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.018099
                        }
                      ],
                      "others_margin": -0.01898
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0204, quality 0.641)",
              "stats": {
                "key_pass": 0.3654,
                "expected_assists": 0.0196,
                "assists": 0.0366,
                "assist_rate": 0.0366,
                "expected_goals": 0.0136,
                "goals": 0.0276,
                "goal_rate": 0.0276,
                "shots_on_target": 0.057,
                "total_shots": 0.1916,
                "rating": 6.761,
                "minutes": 29.94,
                "total_pass": 27.7074,
                "accurate_pass": 25.1004,
                "duels_won": 0.7934,
                "total_long_balls": 2.1509,
                "accurate_long_balls": 1.0204,
                "total_own_half_passes": 11.8432,
                "accurate_own_half_passes": 11.0498,
                "total_opp_half_passes": 15.8643,
                "accurate_opp_half_passes": 14.0505,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 32.0776,
                "possession_lost": 3.4004,
                "dispossessed": 0.3966,
                "duels_lost": 1.5271,
                "aerial_won": 0.0,
                "aerial_lost": 0.3966,
                "interceptions": 0.3966,
                "tackles_won": 0.7934,
                "tackles": 0.7934,
                "clearances": 1.5936,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3371,
                "fouls": 0.3966,
                "fouls_drawn": 0.0,
                "blocks": 0.3966,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4404,
                "total_progression": 40.8031,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1346
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0204,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0173)",
              "stats": {
                "key_pass": 0.3654,
                "expected_assists": 0.0196,
                "assists": 0.036,
                "assist_rate": 0.036,
                "expected_goals": 0.0136,
                "goals": 0.0271,
                "goal_rate": 0.0271,
                "shots_on_target": 0.056,
                "total_shots": 0.1883,
                "rating": 6.761,
                "minutes": 29.94,
                "total_pass": 27.7074,
                "accurate_pass": 25.1004,
                "duels_won": 0.7934,
                "total_long_balls": 2.1509,
                "accurate_long_balls": 1.0204,
                "total_own_half_passes": 11.8432,
                "accurate_own_half_passes": 11.0498,
                "total_opp_half_passes": 15.8643,
                "accurate_opp_half_passes": 14.0505,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 32.0776,
                "possession_lost": 3.4004,
                "dispossessed": 0.3966,
                "duels_lost": 1.5271,
                "aerial_won": 0.0,
                "aerial_lost": 0.3966,
                "interceptions": 0.3897,
                "tackles_won": 0.7797,
                "tackles": 0.7934,
                "clearances": 1.5936,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3371,
                "fouls": 0.3897,
                "fouls_drawn": 0.0,
                "blocks": 0.3966,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4404,
                "total_progression": 40.8031,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1346
              },
              "params": {
                "blend_weight": 0.0173,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.3327,
                "prior_reliability": 0.0533,
                "competition": "Premier League",
                "squad": "Newcastle"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.7934,
                  "after": 0.7797
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.3966,
                  "after": 0.3897
                },
                {
                  "stat": "fouls",
                  "before": 0.3966,
                  "after": 0.3897
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 29.9 to 21.2 expected minutes (appearance prob 0.52)",
              "stats": {
                "key_pass": 0.2593,
                "expected_assists": 0.0139,
                "assists": 0.0256,
                "assist_rate": 0.0256,
                "expected_goals": 0.0097,
                "goals": 0.0192,
                "goal_rate": 0.0192,
                "shots_on_target": 0.0397,
                "total_shots": 0.1353,
                "rating": 6.761,
                "minutes": 21.25,
                "total_pass": 19.6654,
                "accurate_pass": 17.8151,
                "duels_won": 0.5631,
                "total_long_balls": 1.5266,
                "accurate_long_balls": 0.7242,
                "total_own_half_passes": 8.4057,
                "accurate_own_half_passes": 7.8426,
                "total_opp_half_passes": 11.2597,
                "accurate_opp_half_passes": 9.9724,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.7672,
                "possession_lost": 2.4134,
                "dispossessed": 0.3966,
                "duels_lost": 1.0839,
                "aerial_won": 0.0,
                "aerial_lost": 0.3966,
                "interceptions": 0.2766,
                "tackles_won": 0.5534,
                "tackles": 0.5631,
                "clearances": 1.1311,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3371,
                "fouls": 0.2766,
                "fouls_drawn": 0.0,
                "blocks": 0.2815,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.7004,
                "total_progression": 28.9601,
                "progressive_carries": 0.0,
                "shots_off_target": 0.0955,
                "bench_appearance_probability": 0.516,
                "bench_expected_minutes": 21.25
              },
              "params": {
                "expected_minutes": 21.25,
                "projection_minutes": 29.94,
                "minutes_scale": 0.7098,
                "appearance_probability": 0.516
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.2593,
                "expected_assists": 0.0139,
                "assists": 0.0256,
                "assist_rate": 0.0256,
                "expected_goals": 0.0097,
                "goals": 0.0192,
                "goal_rate": 0.0192,
                "shots_on_target": 0.0397,
                "total_shots": 0.1353,
                "rating": 6.761,
                "minutes": 21.25,
                "total_pass": 19.6654,
                "accurate_pass": 17.8151,
                "duels_won": 0.5631,
                "total_long_balls": 1.5266,
                "accurate_long_balls": 0.7242,
                "total_own_half_passes": 8.4057,
                "accurate_own_half_passes": 7.8426,
                "total_opp_half_passes": 11.2597,
                "accurate_opp_half_passes": 9.9724,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.7672,
                "possession_lost": 2.4134,
                "dispossessed": 0.3966,
                "duels_lost": 1.0839,
                "aerial_won": 0.0,
                "aerial_lost": 0.3966,
                "interceptions": 0.2766,
                "tackles_won": 0.5534,
                "tackles": 0.5631,
                "clearances": 1.1311,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3371,
                "fouls": 0.2766,
                "fouls_drawn": 0.0,
                "blocks": 0.2815,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.7004,
                "total_progression": 28.9601,
                "progressive_carries": 0.0,
                "shots_off_target": 0.0955,
                "bench_appearance_probability": 0.516,
                "bench_expected_minutes": 21.25
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "key_pass": 0.2593,
                "expected_assists": 0.0139,
                "assist_rate": 0.0256,
                "assists": 0,
                "expected_goals": 0.0097,
                "goal_rate": 0.0192,
                "goals": 0,
                "shots_on_target": 0.0397,
                "total_shots": 0.1353,
                "rating": 6.761,
                "minutes": 21.25,
                "total_pass": 19.6654,
                "accurate_pass": 17.8151,
                "duels_won": 0.5631,
                "total_long_balls": 1.5266,
                "accurate_long_balls": 0.7242,
                "total_own_half_passes": 8.4057,
                "accurate_own_half_passes": 7.8426,
                "total_opp_half_passes": 11.2597,
                "accurate_opp_half_passes": 9.9724,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.7672,
                "possession_lost": 2.4134,
                "dispossessed": 0.3966,
                "duels_lost": 1.0839,
                "aerial_won": 0.0,
                "aerial_lost": 0.3966,
                "interceptions": 0.2766,
                "tackles_won": 0.5534,
                "tackles": 0.5631,
                "clearances": 1.1311,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3371,
                "fouls": 0.2766,
                "fouls_drawn": 0.0,
                "blocks": 0.2815,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.7004,
                "total_progression": 28.9601,
                "progressive_carries": 0.0,
                "shots_off_target": 0.0955,
                "bench_appearance_probability": 0.516,
                "bench_expected_minutes": 21.25,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.516,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 72.0)",
              "stats": {
                "key_pass": 0.2593,
                "expected_assists": 0.0139,
                "assist_rate": 0.0256,
                "assists": 0,
                "expected_goals": 0.0097,
                "goal_rate": 0.0192,
                "goals": 0,
                "shots_on_target": 0.0397,
                "total_shots": 0.1353,
                "rating": 6.761,
                "minutes": 21.25,
                "total_pass": 19.6654,
                "accurate_pass": 17.8151,
                "duels_won": 0.5631,
                "total_long_balls": 1.5266,
                "accurate_long_balls": 0.7242,
                "total_own_half_passes": 8.4057,
                "accurate_own_half_passes": 7.8426,
                "total_opp_half_passes": 11.2597,
                "accurate_opp_half_passes": 9.9724,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 22.7672,
                "possession_lost": 2.4134,
                "dispossessed": 0.3966,
                "duels_lost": 1.0839,
                "aerial_won": 0.0,
                "aerial_lost": 0.3966,
                "interceptions": 0.2766,
                "tackles_won": 0.5534,
                "tackles": 0.5631,
                "clearances": 1.1311,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3371,
                "fouls": 0.2766,
                "fouls_drawn": 0.0,
                "blocks": 0.2815,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.7004,
                "total_progression": 28.9601,
                "progressive_carries": 0.0,
                "shots_off_target": 0.0955,
                "bench_appearance_probability": 0.516,
                "bench_expected_minutes": 21.25,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4364,
                "fifa_rank": 3931.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            }
          ]
        },
        "Nick Woltemade": {
          "player_id": 980623,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 27,
          "height": 198,
          "market_value": 59000000,
          "stats": {
            "expected_goals": 0.0923,
            "goal_rate": 0.0882,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0578,
            "key_pass": 0,
            "rating": 6.6536,
            "minutes": 23,
            "total_pass": 6,
            "accurate_pass": 4,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 2.738,
            "dispossessed": 0.4167,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.238,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 7,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.752,
            "bench_expected_minutes": 23.12,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0869,
            "projected_assists": 0,
            "assist_probability": 0.0556,
            "finishing_factor": 0.93,
            "creation_factor": 1.25,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 19,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0179,
                "expected_assists": 0.0132,
                "total_shots": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "aerial_won": 2,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 77,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0662,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 22,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 75,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.201,
                "expected_assists": 0.1631,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 35,
                "accurate_pass": 29,
                "key_pass": 3,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 61,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0751,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 11,
                "key_pass": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025045,
              "match_date": "2026-04-25",
              "home_team": "Arsenal",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 15,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3655,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025040,
              "match_date": "2026-04-18",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023999,
              "match_date": "2026-04-12",
              "home_team": "Crystal Palace",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 16,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 65,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1352,
                "expected_assists": 0.0504,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023990,
              "match_date": "2026-03-14",
              "home_team": "Chelsea",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 67,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023977,
              "match_date": "2026-02-28",
              "home_team": "Newcastle United",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Everton",
              "stats": {
                "minutes": 56,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0099,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 905,
            "combined_rank_score": 423.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 6.0,
            "fifa_rank": 690.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6536,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nick Woltemade",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jorge de Frutos",
                  "ranking": 900
                },
                {
                  "player_name": "Bruno Silva",
                  "ranking": 901
                },
                {
                  "player_name": "Vedat Muriqi",
                  "ranking": 902
                },
                {
                  "player_name": "Seung-chan Heo",
                  "ranking": 903
                },
                {
                  "player_name": "Marco Asensio",
                  "ranking": 904
                }
              ],
              "lower": [
                {
                  "player_name": "Choi Gi-Yun",
                  "ranking": 906
                },
                {
                  "player_name": "Seo Jae-Won",
                  "ranking": 907
                },
                {
                  "player_name": "Willyan",
                  "ranking": 908
                },
                {
                  "player_name": "Emanuel Olivera",
                  "ranking": 909
                },
                {
                  "player_name": "Luiz Araújo",
                  "ranking": 910
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 34,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 34,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.12,
            "bench_appearance_prob": 0.752,
            "market_value_adjustment": 1.0133,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 20.0,
              "goals_per90": 0.0,
              "assists_per90": 5.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost F_service (34 historical appearances) to 23.1 expected mins (appearance prob 0.75); FBref playing time empirical prior: 1.0 sub appearances, 20.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0777,
                "goals": 0.0697,
                "goal_rate": 0.0697,
                "shots_on_target": 0.2348,
                "total_shots": 0.594,
                "expected_assists": 0.0387,
                "key_pass": 0.3458,
                "rating": 6.6536,
                "minutes": 18.48,
                "total_pass": 4.4661,
                "accurate_pass": 3.406,
                "duels_won": 1.7175,
                "total_long_balls": 0.0829,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.8086,
                "accurate_opp_half_passes": 2.0932,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.6389,
                "possession_lost": 2.1598,
                "dispossessed": 0.4112,
                "duels_lost": 1.7729,
                "aerial_lost": 0.696,
                "total_contest": 0.6152,
                "won_contest": 0.2697,
                "ball_recovery": 0.624,
                "challenges_lost": 0.0704,
                "fouls": 0.2496,
                "fouls_drawn": 0.717,
                "assists": 0.1868,
                "assist_rate": 0.1868,
                "interceptions": 0.0,
                "tackles_won": 0.1484,
                "tackles": 0.1484,
                "clearances": 0.0,
                "blocks": 0.0704,
                "big_chances_created": 0.3455,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1868,
                "ball_carries": 1.5454,
                "total_progression": 5.846,
                "progressive_carries": 0.2486,
                "shots_off_target": 0.3592
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Bournemouth",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0668,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Crystal Palace",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0568,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Sunderland",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Chelsea",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "Everton",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0519,
                  "totalOppositionHalfPasses": 9.3435,
                  "accurateOppositionHalfPasses": 7.4124,
                  "accuratePass": 10.6799,
                  "totalShots": 0.432
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.077732153236866,
                    "model_output": 0.0777,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0171
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0043
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0029
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0006,
                      "total": 0.0777,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.637078
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.177846
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.050314
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.035705
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.034405
                        }
                      ],
                      "others_margin": -0.00446
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.0697188526391983,
                    "model_output": 0.0697,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0838
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0212
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0097
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0049
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.0697,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.529582
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.194087
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.103872
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.056045
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": -0.044931
                        }
                      ],
                      "others_margin": -0.143903
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.23477399349212646,
                    "model_output": 0.2348,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2143
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0265
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.022
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0188
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0111
                        }
                      ],
                      "others": -0.0317,
                      "total": 0.2348,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.509237
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085702
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.077165
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.070938
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.042458
                        }
                      ],
                      "others_margin": -0.126753
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5939583778381348,
                    "model_output": 0.594,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4811
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1389
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0472
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.024
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.0229
                        }
                      ],
                      "others": -0.0706,
                      "total": 0.594,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.48115
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.13891
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.047216
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.024049
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.022869
                        }
                      ],
                      "others_margin": -0.070555
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03870426118373871,
                    "model_output": 0.0387,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0144
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0059
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0036
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.003
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.008,
                      "total": 0.0387,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.253121
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.111715
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.06657
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.059884
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.053063
                        }
                      ],
                      "others_margin": -0.186428
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3457915186882019,
                    "model_output": 0.3458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2552
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0252
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0234
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0146
                        }
                      ],
                      "others": 0.0058,
                      "total": 0.3458,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.475947
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.061967
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.061306
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.043155
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.04197
                        }
                      ],
                      "others_margin": 0.016986
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.653625011444092,
                    "model_output": 6.6536,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0488
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0127
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0109
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0097
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0091
                        }
                      ],
                      "others": -0.0174,
                      "total": 6.6536,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.048784
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.012697
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.010869
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.009683
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.009094
                        }
                      ],
                      "others_margin": -0.01741
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 10,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0133, quality 0.850)",
              "stats": {
                "expected_goals": 0.0788,
                "goals": 0.0706,
                "goal_rate": 0.0706,
                "shots_on_target": 0.2379,
                "total_shots": 0.6019,
                "expected_assists": 0.0392,
                "key_pass": 0.3504,
                "rating": 6.6536,
                "minutes": 18.48,
                "total_pass": 4.5255,
                "accurate_pass": 3.4513,
                "duels_won": 1.7403,
                "total_long_balls": 0.084,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.846,
                "accurate_opp_half_passes": 2.121,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.7405,
                "possession_lost": 2.1885,
                "dispossessed": 0.4167,
                "duels_lost": 1.7965,
                "aerial_lost": 0.7053,
                "total_contest": 0.6234,
                "won_contest": 0.2733,
                "ball_recovery": 0.6323,
                "challenges_lost": 0.0713,
                "fouls": 0.2529,
                "fouls_drawn": 0.7265,
                "assists": 0.1893,
                "assist_rate": 0.1893,
                "interceptions": 0.0,
                "tackles_won": 0.1504,
                "tackles": 0.1504,
                "clearances": 0.0,
                "blocks": 0.0713,
                "big_chances_created": 0.3501,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1893,
                "ball_carries": 1.566,
                "total_progression": 5.9238,
                "progressive_carries": 0.2519,
                "shots_off_target": 0.364
              },
              "params": {
                "market_value_eur": 59000000,
                "quality_factor": 0.8503,
                "boost_factor": 1.0133,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0011)",
              "stats": {
                "expected_goals": 0.0788,
                "goals": 0.0705,
                "goal_rate": 0.0705,
                "shots_on_target": 0.2376,
                "total_shots": 0.6023,
                "expected_assists": 0.0392,
                "key_pass": 0.3504,
                "rating": 6.6536,
                "minutes": 18.48,
                "total_pass": 4.5255,
                "accurate_pass": 3.4513,
                "duels_won": 1.7403,
                "total_long_balls": 0.084,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.846,
                "accurate_opp_half_passes": 2.121,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.7405,
                "possession_lost": 2.1885,
                "dispossessed": 0.4167,
                "duels_lost": 1.7965,
                "aerial_lost": 0.7053,
                "total_contest": 0.6234,
                "won_contest": 0.2733,
                "ball_recovery": 0.6323,
                "challenges_lost": 0.0713,
                "fouls": 0.2526,
                "fouls_drawn": 0.728,
                "assists": 0.1902,
                "assist_rate": 0.1902,
                "interceptions": 0.0,
                "tackles_won": 0.1502,
                "tackles": 0.1504,
                "clearances": 0.0,
                "blocks": 0.0713,
                "big_chances_created": 0.3501,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.566,
                "total_progression": 5.9238,
                "progressive_carries": 0.2519,
                "shots_off_target": 0.364
              },
              "params": {
                "blend_weight": 0.0011,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2053,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Newcastle"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.5 to 23.1 expected minutes (appearance prob 0.75)",
              "stats": {
                "expected_goals": 0.0986,
                "goals": 0.0882,
                "goal_rate": 0.0882,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.049,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assists": 0.238,
                "assist_rate": 0.238,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12
              },
              "params": {
                "expected_minutes": 23.12,
                "projection_minutes": 18.48,
                "minutes_scale": 1.2511,
                "appearance_probability": 0.752
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0986,
                "goals": 0.0882,
                "goal_rate": 0.0882,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.049,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assists": 0.238,
                "assist_rate": 0.238,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0986,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.049,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.93,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 0.752
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0986,
                  "after": 0.0923
                },
                {
                  "stat": "expected_assists",
                  "before": 0.049,
                  "after": 0.0578
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 80.0)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.93,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 905,
                "fifa_rank": 690.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0869,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.93,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0869,
                "goal_rate": 0.0882,
                "scorer_weight": 0.0858,
                "squad_weight_total": 1.813,
                "weight_share": 0.0473,
                "finishing_factor": 0.93,
                "appearance_weight": 0.752,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0869,
                "projected_assists": 0,
                "assist_probability": 0.0556,
                "finishing_factor": 0.93,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0556,
                "assist_rate": 0.238,
                "provider_weight": 0.0722,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0618,
                "creation_factor": 1.25,
                "appearance_weight": 0.752,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Bazoumana Touré": {
          "player_id": 1568123,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 17,
          "height": 175,
          "market_value": 48000000,
          "stats": {
            "expected_goals": 0.0527,
            "goal_rate": 0.0503,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "expected_assists": 0.0212,
            "key_pass": 0,
            "rating": 6.6546,
            "minutes": 13,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 4.3318,
            "dispossessed": 0.823,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1195,
            "offsides": 1,
            "ball_carries": 4,
            "total_progression": 8,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.75,
            "bench_expected_minutes": 12.61,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0509,
            "projected_assists": 0,
            "assist_probability": 0.0209,
            "finishing_factor": 0.9418,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 34,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0483,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 30,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0919,
                "expected_assists": 0.0701,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 12,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 16,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 33,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2846,
                "expected_assists": 0.0116,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1307,
            "combined_rank_score": 566.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 1081.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6546,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bazoumana Touré",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Savinho",
                  "ranking": 1302
                },
                {
                  "player_name": "Matt Sutton",
                  "ranking": 1303
                },
                {
                  "player_name": "Pierre Kalulu",
                  "ranking": 1304
                },
                {
                  "player_name": "Mario Gila",
                  "ranking": 1305
                },
                {
                  "player_name": "Son Heung Min",
                  "ranking": 1306
                }
              ],
              "lower": [
                {
                  "player_name": "Emil Audero",
                  "ranking": 1308
                },
                {
                  "player_name": "Lukáš Haraslín",
                  "ranking": 1309
                },
                {
                  "player_name": "Marko Dmitrović",
                  "ranking": 1310
                },
                {
                  "player_name": "Tino Livramento",
                  "ranking": 1311
                },
                {
                  "player_name": "Yéremy Pino",
                  "ranking": 1312
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 12.61,
            "bench_appearance_prob": 0.75,
            "market_value_adjustment": 1.0585,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 1.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 12.6 expected mins (appearance prob 0.75); FBref playing time empirical prior: 1.0 sub appearances, 1.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0781,
                "goals": 0.0694,
                "goal_rate": 0.0694,
                "shots_on_target": 0.2266,
                "total_shots": 0.6218,
                "expected_assists": 0.0248,
                "key_pass": 0.3216,
                "rating": 6.6546,
                "minutes": 18.44,
                "total_pass": 4.965,
                "accurate_pass": 3.6346,
                "duels_won": 1.7104,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.585,
                "accurate_opp_half_passes": 2.6433,
                "crosses_total": 0.9913,
                "crosses_accurate": 0.3304,
                "touches": 12.379,
                "possession_lost": 5.9845,
                "dispossessed": 0.7775,
                "duels_lost": 3.654,
                "aerial_lost": 0.3304,
                "total_contest": 2.1574,
                "won_contest": 0.6608,
                "ball_recovery": 1.0496,
                "challenges_lost": 0.7191,
                "fouls": 0.3304,
                "fouls_drawn": 0.3304,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3887,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1769,
                "offsides": 1.0496,
                "ball_carries": 5.3537,
                "total_progression": 11.7402,
                "progressive_carries": 0.9913,
                "shots_off_target": 0.3952
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 33.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 0.0
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.094,
                  "totalOppositionHalfPasses": 3.585,
                  "accurateOppositionHalfPasses": 2.6433,
                  "accuratePass": 3.6346,
                  "totalShots": 0.3304
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0780513659119606,
                    "model_output": 0.0781,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0868
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0143
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0059
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.005
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0043
                        }
                      ],
                      "others": -0.0132,
                      "total": 0.0781,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.573094
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.136653
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.062284
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.056452
                        },
                        {
                          "name": "goals",
                          "margin": 0.048513
                        }
                      ],
                      "others_margin": -0.15574
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06941132247447968,
                    "model_output": 0.0694,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0938
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0153
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0117
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0091
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0074
                        }
                      ],
                      "others": -0.0152,
                      "total": 0.0694,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.616991
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.150288
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.131545
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.104443
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.083657
                        }
                      ],
                      "others_margin": -0.198802
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.22657455503940582,
                    "model_output": 0.2266,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2356
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0236
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0154
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0046,
                      "total": 0.2266,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.577711
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.081508
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.069058
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.061363
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.053293
                        }
                      ],
                      "others_margin": -0.019952
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6217713952064514,
                    "model_output": 0.6218,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5777
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1535
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0654
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.049
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.025
                        }
                      ],
                      "others": -0.0171,
                      "total": 0.6218,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.577702
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.153534
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.065416
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.049011
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.02503
                        }
                      ],
                      "others_margin": -0.017074
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02481183595955372,
                    "model_output": 0.0248,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0194
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0097
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0049
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0023
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0012,
                      "total": 0.0248,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.359368
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.243688
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.151292
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.079476
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.074429
                        }
                      ],
                      "others_margin": -0.043727
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3216032087802887,
                    "model_output": 0.3216,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2721
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.037
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0285
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0249
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0222
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.3216,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.517062
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.096475
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.081325
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.076823
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.068803
                        }
                      ],
                      "others_margin": -0.036995
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.65459680557251,
                    "model_output": 6.6546,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0625
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0248
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0204
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0204
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0153
                        }
                      ],
                      "others": -0.0444,
                      "total": 6.6546,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.062534
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.024762
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.020435
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.020425
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.015317
                        }
                      ],
                      "others_margin": -0.044248
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0585, quality 0.817)",
              "stats": {
                "expected_goals": 0.0826,
                "goals": 0.0735,
                "goal_rate": 0.0735,
                "shots_on_target": 0.2398,
                "total_shots": 0.6581,
                "expected_assists": 0.0263,
                "key_pass": 0.3404,
                "rating": 6.6546,
                "minutes": 18.44,
                "total_pass": 5.2555,
                "accurate_pass": 3.8472,
                "duels_won": 1.8105,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7947,
                "accurate_opp_half_passes": 2.7979,
                "crosses_total": 1.0493,
                "crosses_accurate": 0.3497,
                "touches": 13.1032,
                "possession_lost": 6.3346,
                "dispossessed": 0.823,
                "duels_lost": 3.8678,
                "aerial_lost": 0.3497,
                "total_contest": 2.2836,
                "won_contest": 0.6995,
                "ball_recovery": 1.111,
                "challenges_lost": 0.7612,
                "fouls": 0.3497,
                "fouls_drawn": 0.3497,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4114,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1872,
                "offsides": 1.111,
                "ball_carries": 5.6669,
                "total_progression": 12.427,
                "progressive_carries": 1.0493,
                "shots_off_target": 0.4183
              },
              "params": {
                "market_value_eur": 48000000,
                "quality_factor": 0.8168,
                "boost_factor": 1.0585,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.4 to 12.6 expected minutes (appearance prob 0.75)",
              "stats": {
                "expected_goals": 0.0565,
                "goals": 0.0503,
                "goal_rate": 0.0503,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.018,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.128,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61
              },
              "params": {
                "expected_minutes": 12.61,
                "projection_minutes": 18.44,
                "minutes_scale": 0.6838,
                "appearance_probability": 0.75
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0565,
                "goals": 0.0503,
                "goal_rate": 0.0503,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.018,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.128,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0565,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.018,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.128,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 0.75
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1307,
                "fifa_rank": 1081.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0509,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0509,
                "goal_rate": 0.0503,
                "scorer_weight": 0.0496,
                "squad_weight_total": 1.813,
                "weight_share": 0.0274,
                "finishing_factor": 0.9418,
                "appearance_weight": 0.75,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0509,
                "projected_assists": 0,
                "assist_probability": 0.0209,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0209,
                "assist_rate": 0.0,
                "provider_weight": 0.017,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0145,
                "creation_factor": 0.8,
                "appearance_weight": 0.75,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Nick Woltemade": {
          "player_id": 980623,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 27,
          "height": 198,
          "market_value": 59000000,
          "stats": {
            "expected_goals": 0.0923,
            "goal_rate": 0.0882,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0578,
            "key_pass": 0,
            "rating": 6.6536,
            "minutes": 23,
            "total_pass": 6,
            "accurate_pass": 4,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 2.738,
            "dispossessed": 0.4167,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.238,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 7,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.752,
            "bench_expected_minutes": 23.12,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0869,
            "projected_assists": 0,
            "assist_probability": 0.0556,
            "finishing_factor": 0.93,
            "creation_factor": 1.25,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 19,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0179,
                "expected_assists": 0.0132,
                "total_shots": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "aerial_won": 2,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Fulham",
              "stats": {
                "minutes": 77,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0662,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 22,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 75,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.201,
                "expected_assists": 0.1631,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 35,
                "accurate_pass": 29,
                "key_pass": 3,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 61,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0751,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 11,
                "key_pass": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025045,
              "match_date": "2026-04-25",
              "home_team": "Arsenal",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 15,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3655,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025040,
              "match_date": "2026-04-18",
              "home_team": "Newcastle United",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023999,
              "match_date": "2026-04-12",
              "home_team": "Crystal Palace",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 16,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 65,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1352,
                "expected_assists": 0.0504,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023990,
              "match_date": "2026-03-14",
              "home_team": "Chelsea",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 67,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023977,
              "match_date": "2026-02-28",
              "home_team": "Newcastle United",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Newcastle United",
              "opponent": "Everton",
              "stats": {
                "minutes": 56,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0099,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 905,
            "combined_rank_score": 423.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 6.0,
            "fifa_rank": 690.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6536,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nick Woltemade",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jorge de Frutos",
                  "ranking": 900
                },
                {
                  "player_name": "Bruno Silva",
                  "ranking": 901
                },
                {
                  "player_name": "Vedat Muriqi",
                  "ranking": 902
                },
                {
                  "player_name": "Seung-chan Heo",
                  "ranking": 903
                },
                {
                  "player_name": "Marco Asensio",
                  "ranking": 904
                }
              ],
              "lower": [
                {
                  "player_name": "Choi Gi-Yun",
                  "ranking": 906
                },
                {
                  "player_name": "Seo Jae-Won",
                  "ranking": 907
                },
                {
                  "player_name": "Willyan",
                  "ranking": 908
                },
                {
                  "player_name": "Emanuel Olivera",
                  "ranking": 909
                },
                {
                  "player_name": "Luiz Araújo",
                  "ranking": 910
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 34,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 34,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.12,
            "bench_appearance_prob": 0.752,
            "market_value_adjustment": 1.0133,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 20.0,
              "goals_per90": 0.0,
              "assists_per90": 5.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost F_service (34 historical appearances) to 23.1 expected mins (appearance prob 0.75); FBref playing time empirical prior: 1.0 sub appearances, 20.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0777,
                "goals": 0.0697,
                "goal_rate": 0.0697,
                "shots_on_target": 0.2348,
                "total_shots": 0.594,
                "expected_assists": 0.0387,
                "key_pass": 0.3458,
                "rating": 6.6536,
                "minutes": 18.48,
                "total_pass": 4.4661,
                "accurate_pass": 3.406,
                "duels_won": 1.7175,
                "total_long_balls": 0.0829,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.8086,
                "accurate_opp_half_passes": 2.0932,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.6389,
                "possession_lost": 2.1598,
                "dispossessed": 0.4112,
                "duels_lost": 1.7729,
                "aerial_lost": 0.696,
                "total_contest": 0.6152,
                "won_contest": 0.2697,
                "ball_recovery": 0.624,
                "challenges_lost": 0.0704,
                "fouls": 0.2496,
                "fouls_drawn": 0.717,
                "assists": 0.1868,
                "assist_rate": 0.1868,
                "interceptions": 0.0,
                "tackles_won": 0.1484,
                "tackles": 0.1484,
                "clearances": 0.0,
                "blocks": 0.0704,
                "big_chances_created": 0.3455,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1868,
                "ball_carries": 1.5454,
                "total_progression": 5.846,
                "progressive_carries": 0.2486,
                "shots_off_target": 0.3592
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Fulham",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "West Ham United",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Nottingham Forest",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Arsenal",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Bournemouth",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0668,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Crystal Palace",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0568,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Sunderland",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Chelsea",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "Everton",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0519,
                  "totalOppositionHalfPasses": 9.3435,
                  "accurateOppositionHalfPasses": 7.4124,
                  "accuratePass": 10.6799,
                  "totalShots": 0.432
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.077732153236866,
                    "model_output": 0.0777,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0171
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0043
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0029
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0006,
                      "total": 0.0777,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.637078
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.177846
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.050314
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.035705
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.034405
                        }
                      ],
                      "others_margin": -0.00446
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.0697188526391983,
                    "model_output": 0.0697,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0838
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0212
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0097
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0049
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.0697,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.529582
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.194087
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.103872
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.056045
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": -0.044931
                        }
                      ],
                      "others_margin": -0.143903
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.23477399349212646,
                    "model_output": 0.2348,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2143
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0265
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.022
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0188
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0111
                        }
                      ],
                      "others": -0.0317,
                      "total": 0.2348,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.509237
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085702
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.077165
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.070938
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.042458
                        }
                      ],
                      "others_margin": -0.126753
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5939583778381348,
                    "model_output": 0.594,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4811
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1389
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0472
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.024
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.0229
                        }
                      ],
                      "others": -0.0706,
                      "total": 0.594,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.48115
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.13891
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.047216
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.024049
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.022869
                        }
                      ],
                      "others_margin": -0.070555
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03870426118373871,
                    "model_output": 0.0387,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0144
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0059
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0036
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.003
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.008,
                      "total": 0.0387,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.253121
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.111715
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.06657
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.059884
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.053063
                        }
                      ],
                      "others_margin": -0.186428
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3457915186882019,
                    "model_output": 0.3458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2552
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0252
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0234
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0146
                        }
                      ],
                      "others": 0.0058,
                      "total": 0.3458,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.475947
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.061967
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.061306
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.043155
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.04197
                        }
                      ],
                      "others_margin": 0.016986
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.653625011444092,
                    "model_output": 6.6536,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0488
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0127
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0109
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0097
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0091
                        }
                      ],
                      "others": -0.0174,
                      "total": 6.6536,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.048784
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.012697
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.010869
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.009683
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.009094
                        }
                      ],
                      "others_margin": -0.01741
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 10,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0133, quality 0.850)",
              "stats": {
                "expected_goals": 0.0788,
                "goals": 0.0706,
                "goal_rate": 0.0706,
                "shots_on_target": 0.2379,
                "total_shots": 0.6019,
                "expected_assists": 0.0392,
                "key_pass": 0.3504,
                "rating": 6.6536,
                "minutes": 18.48,
                "total_pass": 4.5255,
                "accurate_pass": 3.4513,
                "duels_won": 1.7403,
                "total_long_balls": 0.084,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.846,
                "accurate_opp_half_passes": 2.121,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.7405,
                "possession_lost": 2.1885,
                "dispossessed": 0.4167,
                "duels_lost": 1.7965,
                "aerial_lost": 0.7053,
                "total_contest": 0.6234,
                "won_contest": 0.2733,
                "ball_recovery": 0.6323,
                "challenges_lost": 0.0713,
                "fouls": 0.2529,
                "fouls_drawn": 0.7265,
                "assists": 0.1893,
                "assist_rate": 0.1893,
                "interceptions": 0.0,
                "tackles_won": 0.1504,
                "tackles": 0.1504,
                "clearances": 0.0,
                "blocks": 0.0713,
                "big_chances_created": 0.3501,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1893,
                "ball_carries": 1.566,
                "total_progression": 5.9238,
                "progressive_carries": 0.2519,
                "shots_off_target": 0.364
              },
              "params": {
                "market_value_eur": 59000000,
                "quality_factor": 0.8503,
                "boost_factor": 1.0133,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0011)",
              "stats": {
                "expected_goals": 0.0788,
                "goals": 0.0705,
                "goal_rate": 0.0705,
                "shots_on_target": 0.2376,
                "total_shots": 0.6023,
                "expected_assists": 0.0392,
                "key_pass": 0.3504,
                "rating": 6.6536,
                "minutes": 18.48,
                "total_pass": 4.5255,
                "accurate_pass": 3.4513,
                "duels_won": 1.7403,
                "total_long_balls": 0.084,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.846,
                "accurate_opp_half_passes": 2.121,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.7405,
                "possession_lost": 2.1885,
                "dispossessed": 0.4167,
                "duels_lost": 1.7965,
                "aerial_lost": 0.7053,
                "total_contest": 0.6234,
                "won_contest": 0.2733,
                "ball_recovery": 0.6323,
                "challenges_lost": 0.0713,
                "fouls": 0.2526,
                "fouls_drawn": 0.728,
                "assists": 0.1902,
                "assist_rate": 0.1902,
                "interceptions": 0.0,
                "tackles_won": 0.1502,
                "tackles": 0.1504,
                "clearances": 0.0,
                "blocks": 0.0713,
                "big_chances_created": 0.3501,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.566,
                "total_progression": 5.9238,
                "progressive_carries": 0.2519,
                "shots_off_target": 0.364
              },
              "params": {
                "blend_weight": 0.0011,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2053,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Newcastle"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.5 to 23.1 expected minutes (appearance prob 0.75)",
              "stats": {
                "expected_goals": 0.0986,
                "goals": 0.0882,
                "goal_rate": 0.0882,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.049,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assists": 0.238,
                "assist_rate": 0.238,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12
              },
              "params": {
                "expected_minutes": 23.12,
                "projection_minutes": 18.48,
                "minutes_scale": 1.2511,
                "appearance_probability": 0.752
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0986,
                "goals": 0.0882,
                "goal_rate": 0.0882,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.049,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assists": 0.238,
                "assist_rate": 0.238,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0986,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.049,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.93,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 0.752
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0986,
                  "after": 0.0923
                },
                {
                  "stat": "expected_assists",
                  "before": 0.049,
                  "after": 0.0578
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 80.0)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.93,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 905,
                "fifa_rank": 690.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0869,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.93,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0869,
                "goal_rate": 0.0882,
                "scorer_weight": 0.0858,
                "squad_weight_total": 1.813,
                "weight_share": 0.0473,
                "finishing_factor": 0.93,
                "appearance_weight": 0.752,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0923,
                "goal_rate": 0.0882,
                "goals": 0,
                "shots_on_target": 0.2973,
                "total_shots": 0.7535,
                "expected_assists": 0.0578,
                "key_pass": 0.4384,
                "rating": 6.6536,
                "minutes": 23.12,
                "total_pass": 5.6618,
                "accurate_pass": 4.3179,
                "duels_won": 2.1773,
                "total_long_balls": 0.1051,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.5606,
                "accurate_opp_half_passes": 2.6535,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.684,
                "possession_lost": 2.738,
                "dispossessed": 0.4167,
                "duels_lost": 2.2476,
                "aerial_lost": 0.7053,
                "total_contest": 0.7799,
                "won_contest": 0.3419,
                "ball_recovery": 0.7911,
                "challenges_lost": 0.0713,
                "fouls": 0.316,
                "fouls_drawn": 0.9108,
                "assist_rate": 0.238,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1879,
                "tackles": 0.1882,
                "clearances": 0.0,
                "blocks": 0.0892,
                "big_chances_created": 0.438,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.1902,
                "ball_carries": 1.9592,
                "total_progression": 7.4112,
                "progressive_carries": 0.3151,
                "shots_off_target": 0.4554,
                "bench_appearance_probability": 0.752,
                "bench_expected_minutes": 23.12,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0869,
                "projected_assists": 0,
                "assist_probability": 0.0556,
                "finishing_factor": 0.93,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0556,
                "assist_rate": 0.238,
                "provider_weight": 0.0722,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0618,
                "creation_factor": 1.25,
                "appearance_weight": 0.752,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Bazoumana Touré": {
          "player_id": 1568123,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 17,
          "height": 175,
          "market_value": 48000000,
          "stats": {
            "expected_goals": 0.0527,
            "goal_rate": 0.0503,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "expected_assists": 0.0212,
            "key_pass": 0,
            "rating": 6.6546,
            "minutes": 13,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 4.3318,
            "dispossessed": 0.823,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1195,
            "offsides": 1,
            "ball_carries": 4,
            "total_progression": 8,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.75,
            "bench_expected_minutes": 12.61,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0509,
            "projected_assists": 0,
            "assist_probability": 0.0209,
            "finishing_factor": 0.9418,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363888,
              "match_date": "2026-10-17 16:30:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Newcastle",
              "away_team": "Aston Villa",
              "home_score_current": 0.0,
              "away_score_current": 1.0,
              "team_side": "home",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 34,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0483,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_type": "played",
              "match_id": 16363874,
              "match_date": "2026-10-12 19:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Newcastle",
              "home_score_current": 4.0,
              "away_score_current": 1.0,
              "team_side": "away",
              "status_code": 100,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "substitute",
              "is_starting_11": false,
              "team": "Newcastle",
              "opponent": "Coventry",
              "stats": {
                "minutes": 30,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0919,
                "expected_assists": 0.0701,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 12,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 16,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 33,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2846,
                "expected_assists": 0.0116,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363256,
              "match_date": "2026-08-29",
              "home_team": "Tottenham Hotspur",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1307,
            "combined_rank_score": 566.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 1081.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6546,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bazoumana Touré",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Savinho",
                  "ranking": 1302
                },
                {
                  "player_name": "Matt Sutton",
                  "ranking": 1303
                },
                {
                  "player_name": "Pierre Kalulu",
                  "ranking": 1304
                },
                {
                  "player_name": "Mario Gila",
                  "ranking": 1305
                },
                {
                  "player_name": "Son Heung Min",
                  "ranking": 1306
                }
              ],
              "lower": [
                {
                  "player_name": "Emil Audero",
                  "ranking": 1308
                },
                {
                  "player_name": "Lukáš Haraslín",
                  "ranking": 1309
                },
                {
                  "player_name": "Marko Dmitrović",
                  "ranking": 1310
                },
                {
                  "player_name": "Tino Livramento",
                  "ranking": 1311
                },
                {
                  "player_name": "Yéremy Pino",
                  "ranking": 1312
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 12.61,
            "bench_appearance_prob": 0.75,
            "market_value_adjustment": 1.0585,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 1.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 12.6 expected mins (appearance prob 0.75); FBref playing time empirical prior: 1.0 sub appearances, 1.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0781,
                "goals": 0.0694,
                "goal_rate": 0.0694,
                "shots_on_target": 0.2266,
                "total_shots": 0.6218,
                "expected_assists": 0.0248,
                "key_pass": 0.3216,
                "rating": 6.6546,
                "minutes": 18.44,
                "total_pass": 4.965,
                "accurate_pass": 3.6346,
                "duels_won": 1.7104,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.585,
                "accurate_opp_half_passes": 2.6433,
                "crosses_total": 0.9913,
                "crosses_accurate": 0.3304,
                "touches": 12.379,
                "possession_lost": 5.9845,
                "dispossessed": 0.7775,
                "duels_lost": 3.654,
                "aerial_lost": 0.3304,
                "total_contest": 2.1574,
                "won_contest": 0.6608,
                "ball_recovery": 1.0496,
                "challenges_lost": 0.7191,
                "fouls": 0.3304,
                "fouls_drawn": 0.3304,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3887,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1769,
                "offsides": 1.0496,
                "ball_carries": 5.3537,
                "total_progression": 11.7402,
                "progressive_carries": 0.9913,
                "shots_off_target": 0.3952
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-25T10:06:48.009837+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 33.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 0.0
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.094,
                  "totalOppositionHalfPasses": 3.585,
                  "accurateOppositionHalfPasses": 2.6433,
                  "accuratePass": 3.6346,
                  "totalShots": 0.3304
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0780513659119606,
                    "model_output": 0.0781,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0868
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0143
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0059
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.005
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0043
                        }
                      ],
                      "others": -0.0132,
                      "total": 0.0781,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.573094
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.136653
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.062284
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.056452
                        },
                        {
                          "name": "goals",
                          "margin": 0.048513
                        }
                      ],
                      "others_margin": -0.15574
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06941132247447968,
                    "model_output": 0.0694,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0938
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0153
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0117
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0091
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0074
                        }
                      ],
                      "others": -0.0152,
                      "total": 0.0694,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.616991
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.150288
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.131545
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.104443
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.083657
                        }
                      ],
                      "others_margin": -0.198802
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.22657455503940582,
                    "model_output": 0.2266,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0606
                      },
                      {
                        "name": "goals",
                        "importance": 0.0481
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.047
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0391
                      }
                    ],
                    "decomposition": {
                      "base": 0.537,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2356
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0236
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0154
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0046,
                      "total": 0.2266,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.577711
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.081508
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.069058
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.061363
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.053293
                        }
                      ],
                      "others_margin": -0.019952
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6217713952064514,
                    "model_output": 0.6218,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2742
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0628
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0421
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0391
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0333
                      }
                    ],
                    "decomposition": {
                      "base": 1.3787,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5777
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1535
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0654
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.049
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": -0.025
                        }
                      ],
                      "others": -0.0171,
                      "total": 0.6218,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.577702
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.153534
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.065416
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.049011
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": -0.02503
                        }
                      ],
                      "others_margin": -0.017074
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02481183595955372,
                    "model_output": 0.0248,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0194
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0097
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0049
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0023
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0012,
                      "total": 0.0248,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.359368
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.243688
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.151292
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.079476
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.074429
                        }
                      ],
                      "others_margin": -0.043727
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3216032087802887,
                    "model_output": 0.3216,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1529
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1213
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.055
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0489
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0452
                      }
                    ],
                    "decomposition": {
                      "base": 0.674,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2721
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.037
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0285
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0249
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0222
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.3216,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.517062
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.096475
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.081325
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.076823
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.068803
                        }
                      ],
                      "others_margin": -0.036995
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.65459680557251,
                    "model_output": 6.6546,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0739
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0574
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0442
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0409
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0331
                      }
                    ],
                    "decomposition": {
                      "base": 6.7622,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0625
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0248
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0204
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0204
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0153
                        }
                      ],
                      "others": -0.0444,
                      "total": 6.6546,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.062534
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.024762
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.020435
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.020425
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.015317
                        }
                      ],
                      "others_margin": -0.044248
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0585, quality 0.817)",
              "stats": {
                "expected_goals": 0.0826,
                "goals": 0.0735,
                "goal_rate": 0.0735,
                "shots_on_target": 0.2398,
                "total_shots": 0.6581,
                "expected_assists": 0.0263,
                "key_pass": 0.3404,
                "rating": 6.6546,
                "minutes": 18.44,
                "total_pass": 5.2555,
                "accurate_pass": 3.8472,
                "duels_won": 1.8105,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.7947,
                "accurate_opp_half_passes": 2.7979,
                "crosses_total": 1.0493,
                "crosses_accurate": 0.3497,
                "touches": 13.1032,
                "possession_lost": 6.3346,
                "dispossessed": 0.823,
                "duels_lost": 3.8678,
                "aerial_lost": 0.3497,
                "total_contest": 2.2836,
                "won_contest": 0.6995,
                "ball_recovery": 1.111,
                "challenges_lost": 0.7612,
                "fouls": 0.3497,
                "fouls_drawn": 0.3497,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4114,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1872,
                "offsides": 1.111,
                "ball_carries": 5.6669,
                "total_progression": 12.427,
                "progressive_carries": 1.0493,
                "shots_off_target": 0.4183
              },
              "params": {
                "market_value_eur": 48000000,
                "quality_factor": 0.8168,
                "boost_factor": 1.0585,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.4 to 12.6 expected minutes (appearance prob 0.75)",
              "stats": {
                "expected_goals": 0.0565,
                "goals": 0.0503,
                "goal_rate": 0.0503,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.018,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.128,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61
              },
              "params": {
                "expected_minutes": 12.61,
                "projection_minutes": 18.44,
                "minutes_scale": 0.6838,
                "appearance_probability": 0.75
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0565,
                "goals": 0.0503,
                "goal_rate": 0.0503,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.018,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.128,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0565,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.018,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.128,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 0.75
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1307,
                "fifa_rank": 1081.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0509,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0509,
                "goal_rate": 0.0503,
                "scorer_weight": 0.0496,
                "squad_weight_total": 1.813,
                "weight_share": 0.0274,
                "finishing_factor": 0.9418,
                "appearance_weight": 0.75,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0527,
                "goal_rate": 0.0503,
                "goals": 0,
                "shots_on_target": 0.164,
                "total_shots": 0.4501,
                "expected_assists": 0.0212,
                "key_pass": 0.2328,
                "rating": 6.6546,
                "minutes": 12.61,
                "total_pass": 3.5939,
                "accurate_pass": 2.6309,
                "duels_won": 1.2381,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.595,
                "accurate_opp_half_passes": 1.9133,
                "crosses_total": 0.7176,
                "crosses_accurate": 0.2391,
                "touches": 8.9605,
                "possession_lost": 4.3318,
                "dispossessed": 0.823,
                "duels_lost": 2.645,
                "aerial_lost": 0.3497,
                "total_contest": 1.5616,
                "won_contest": 0.4783,
                "ball_recovery": 0.7597,
                "challenges_lost": 0.7612,
                "fouls": 0.2391,
                "fouls_drawn": 0.2391,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2813,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1195,
                "offsides": 1.111,
                "ball_carries": 3.8752,
                "total_progression": 8.4981,
                "progressive_carries": 0.7176,
                "shots_off_target": 0.2861,
                "bench_appearance_probability": 0.75,
                "bench_expected_minutes": 12.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0509,
                "projected_assists": 0,
                "assist_probability": 0.0209,
                "finishing_factor": 0.9418,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0209,
                "assist_rate": 0.0,
                "provider_weight": 0.017,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0145,
                "creation_factor": 0.8,
                "appearance_weight": 0.75,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        },
        "Aladji Bamba": {
          "player_id": 1868591,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 194,
          "market_value": 23000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0185,
            "assist_rate": 0.0297,
            "assists": 0,
            "expected_goals": 0.0174,
            "goal_rate": 0.0425,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.6426,
            "minutes": 19,
            "total_pass": 3,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 2.075,
            "dispossessed": 0.34,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.71,
            "bench_expected_minutes": 18.53,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.092,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0172,
            "projected_assists": 0,
            "assist_probability": 0.0183,
            "finishing_factor": 1.25,
            "creation_factor": 1.1967,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Hull City",
              "stats": {
                "minutes": 10,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363644,
              "match_date": "2026-09-14",
              "home_team": "Leeds United",
              "away_team": "Newcastle United",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363246,
              "match_date": "2026-08-23",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Newcastle United",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4363,
            "combined_rank_score": 2376.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 3930.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6426,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aladji Bamba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Hugo Lloris",
                  "ranking": 4358
                },
                {
                  "player_name": "Roman Bürki",
                  "ranking": 4359
                },
                {
                  "player_name": "Andy Nájar",
                  "ranking": 4360
                },
                {
                  "player_name": "Goduine Koyalipou",
                  "ranking": 4361
                },
                {
                  "player_name": "Jonathan Bamba",
                  "ranking": 4362
                }
              ],
              "lower": [
                {
                  "player_name": "Sean Steur",
                  "ranking": 4364
                },
                {
                  "player_name": "Guilherme",
                  "ranking": 4365
                },
                {
                  "player_name": "Carlos González",
                  "ranking": 4366
                },
                {
                  "player_name": "Brian White",
                  "ranking": 4367
                },
                {
                  "player_name": "Pavel Bucha",
                  "ranking": 4368
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.439,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.439,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.53,
            "bench_appearance_prob": 0.71,
            "market_value_adjustment": 1.029,
            "fbref_prior_metrics": {
              "squad": "Newcastle",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (3 historical appearances) to 18.5 expected mins (appearance prob 0.71); FBref playing time empirical prior: 1.0 sub appearances, 15.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2059,
                "expected_assists": 0.0124,
                "assists": 0.0223,
                "assist_rate": 0.0223,
                "expected_goals": 0.0148,
                "goals": 0.032,
                "goal_rate": 0.032,
                "shots_on_target": 0.0745,
                "total_shots": 0.2873,
                "rating": 6.6426,
                "minutes": 14.27,
                "total_pass": 2.38,
                "accurate_pass": 2.0496,
                "duels_won": 1.6696,
                "total_long_balls": 0.3304,
                "accurate_long_balls": 0.3304,
                "total_own_half_passes": 1.0,
                "accurate_own_half_passes": 1.0,
                "total_opp_half_passes": 1.38,
                "accurate_opp_half_passes": 1.0496,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.38,
                "possession_lost": 1.553,
                "dispossessed": 0.3304,
                "duels_lost": 1.2721,
                "aerial_won": 0.6696,
                "aerial_lost": 0.2809,
                "interceptions": 0.0,
                "tackles_won": 0.6113,
                "tackles": 1.0,
                "clearances": 1.0583,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.3304,
                "fouls": 0.3304,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1079,
                "total_progression": 0.8684,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2128
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-25T10:06:15.820149+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Hull City",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Leeds United",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Liverpool FC",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.0,
                  "creative_index": 0.0001,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.0002,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.20588497817516327,
                    "model_output": 0.2059,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1676
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1369
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0599
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0498
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0339
                      }
                    ],
                    "decomposition": {
                      "base": 0.8862,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.444
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0466
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0415
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0337
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.02
                        }
                      ],
                      "others": -0.0945,
                      "total": 0.2059,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.695074
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.111401
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.110825
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.099964
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.064437
                        }
                      ],
                      "others_margin": -0.377922
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.012422285042703152,
                    "model_output": 0.0124,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0388
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0115
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0082
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0039
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0016
                        }
                      ],
                      "others": -0.0094,
                      "total": 0.0124,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.601488
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.279572
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.261015
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.153566
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.071557
                        }
                      ],
                      "others_margin": -0.565017
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.022341547533869743,
                    "model_output": 0.0223,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0535
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0459
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0393
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0321
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0306
                      }
                    ],
                    "decomposition": {
                      "base": 0.0852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0222
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0131
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0071
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0055
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.0223,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.302055
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.233807
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.152436
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.138101
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.081019
                        }
                      ],
                      "others_margin": -0.431482
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.014781324192881584,
                    "model_output": 0.0148,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0392
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0196
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.01
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0044
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0022
                        }
                      ],
                      "others": -0.0086,
                      "total": 0.0148,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.535823
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.437625
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.330739
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.189907
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.098758
                        }
                      ],
                      "others_margin": -0.459138
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.031969837844371796,
                    "model_output": 0.032,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0324
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0182
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0089
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0027
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0023
                        }
                      ],
                      "others": -0.0011,
                      "total": 0.032,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.402503
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.327157
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.208286
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.074465
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.065955
                        }
                      ],
                      "others_margin": -0.038183
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.07451626658439636,
                    "model_output": 0.0745,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.127
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0728
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0694
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0373
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.324,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1445
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0609
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0237
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0174
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0041
                        }
                      ],
                      "others": -0.0071,
                      "total": 0.0745,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.590328
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.414352
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.222998
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.201934
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.050911
                        }
                      ],
                      "others_margin": -0.090997
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.2873208522796631,
                    "model_output": 0.2873,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1313
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1243
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0616
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0455
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.9905,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3546
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2353
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0482
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0305
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0304
                        }
                      ],
                      "others": -0.0042,
                      "total": 0.2873,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.354555
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.235254
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.048228
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.030511
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.030408
                        }
                      ],
                      "others_margin": -0.004188
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.642569541931152,
                    "model_output": 6.6426,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0814
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0732
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0525
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0416
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0311
                      }
                    ],
                    "decomposition": {
                      "base": 6.8489,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0587
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0427
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0312
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0161
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.0492,
                      "total": 6.6426,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.058667
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.042705
                        },
                        {
                          "name": "rating",
                          "margin": -0.031213
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016093
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.008438
                        }
                      ],
                      "others_margin": -0.049186
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0290, quality 0.660)",
              "stats": {
                "key_pass": 0.2119,
                "expected_assists": 0.0128,
                "assists": 0.023,
                "assist_rate": 0.023,
                "expected_goals": 0.0152,
                "goals": 0.0329,
                "goal_rate": 0.0329,
                "shots_on_target": 0.0767,
                "total_shots": 0.2957,
                "rating": 6.6426,
                "minutes": 14.27,
                "total_pass": 2.449,
                "accurate_pass": 2.109,
                "duels_won": 1.718,
                "total_long_balls": 0.34,
                "accurate_long_balls": 0.34,
                "total_own_half_passes": 1.029,
                "accurate_own_half_passes": 1.029,
                "total_opp_half_passes": 1.42,
                "accurate_opp_half_passes": 1.08,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.565,
                "possession_lost": 1.598,
                "dispossessed": 0.34,
                "duels_lost": 1.309,
                "aerial_won": 0.689,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.629,
                "tackles": 1.029,
                "clearances": 1.089,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.34,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.14,
                "total_progression": 0.8936,
                "progressive_carries": 0.0,
                "shots_off_target": 0.219
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.029,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0054)",
              "stats": {
                "key_pass": 0.2119,
                "expected_assists": 0.0128,
                "assists": 0.0229,
                "assist_rate": 0.0229,
                "expected_goals": 0.0152,
                "goals": 0.0327,
                "goal_rate": 0.0327,
                "shots_on_target": 0.0763,
                "total_shots": 0.2941,
                "rating": 6.6426,
                "minutes": 14.27,
                "total_pass": 2.449,
                "accurate_pass": 2.109,
                "duels_won": 1.718,
                "total_long_balls": 0.34,
                "accurate_long_balls": 0.34,
                "total_own_half_passes": 1.029,
                "accurate_own_half_passes": 1.029,
                "total_opp_half_passes": 1.42,
                "accurate_opp_half_passes": 1.08,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 6.565,
                "possession_lost": 1.598,
                "dispossessed": 0.34,
                "duels_lost": 1.309,
                "aerial_won": 0.689,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.6299,
                "tackles": 1.029,
                "clearances": 1.089,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.3382,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.14,
                "total_progression": 0.8936,
                "progressive_carries": 0.0,
                "shots_off_target": 0.219
              },
              "params": {
                "blend_weight": 0.0054,
                "history_matches": 3,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1586,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Newcastle"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.3 to 18.5 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0166,
                "assists": 0.0297,
                "assist_rate": 0.0297,
                "expected_goals": 0.0197,
                "goals": 0.0425,
                "goal_rate": 0.0425,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53
              },
              "params": {
                "expected_minutes": 18.53,
                "projection_minutes": 14.27,
                "minutes_scale": 1.2985,
                "appearance_probability": 0.71
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0166,
                "assists": 0.0297,
                "assist_rate": 0.0297,
                "expected_goals": 0.0197,
                "goals": 0.0425,
                "goal_rate": 0.0425,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 2 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0166,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0197,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 2
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.69 (squad xG sum 1.3547, xG scale 1.2445, xA scale 1.5693, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967
              },
              "params": {
                "team_lambda": 1.686,
                "squad_xg_sum": 1.3547,
                "squad_xa_sum": 0.6983,
                "team_expected_assists": 1.0959,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2445,
                "xa_scale": 1.5693,
                "opponent_lambda": 1.602,
                "scoreline_reset": true,
                "appearance_weight": 0.71
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 72.0)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4363,
                "fifa_rank": 3930.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0172,
                "goal_rate": 0.0425,
                "scorer_weight": 0.0217,
                "squad_weight_total": 1.813,
                "weight_share": 0.012,
                "finishing_factor": 1.25,
                "appearance_weight": 0.71,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "William Osula",
                    "weight": 0.528,
                    "already": 0,
                    "effective_weight": 0.528,
                    "runner_up": "Yoane Wissa",
                    "runner_up_effective_weight": 0.3271
                  },
                  {
                    "n": 2,
                    "player": "Yoane Wissa",
                    "weight": 0.3271,
                    "already": 0,
                    "effective_weight": 0.3271,
                    "runner_up": "Harvey Barnes",
                    "runner_up_effective_weight": 0.2467
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.2752,
                "expected_assists": 0.0185,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_goals": 0.0174,
                "goal_rate": 0.0425,
                "goals": 0,
                "shots_on_target": 0.0991,
                "total_shots": 0.3835,
                "rating": 6.6426,
                "minutes": 18.53,
                "total_pass": 3.1801,
                "accurate_pass": 2.7386,
                "duels_won": 2.2309,
                "total_long_balls": 0.4415,
                "accurate_long_balls": 0.4415,
                "total_own_half_passes": 1.3362,
                "accurate_own_half_passes": 1.3362,
                "total_opp_half_passes": 1.8439,
                "accurate_opp_half_passes": 1.4024,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.5248,
                "possession_lost": 2.075,
                "dispossessed": 0.34,
                "duels_lost": 1.6998,
                "aerial_won": 0.8947,
                "aerial_lost": 0.289,
                "interceptions": 0.0,
                "tackles_won": 0.8179,
                "tackles": 1.3362,
                "clearances": 1.4141,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.34,
                "fouls": 0.4392,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.4803,
                "total_progression": 1.1604,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2844,
                "bench_appearance_probability": 0.71,
                "bench_expected_minutes": 18.53,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.092,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0172,
                "projected_assists": 0,
                "assist_probability": 0.0183,
                "finishing_factor": 1.25,
                "creation_factor": 1.1967,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0183,
                "assist_rate": 0.0297,
                "provider_weight": 0.0221,
                "squad_weight_total": 1.1691,
                "weight_share": 0.0189,
                "creation_factor": 1.1967,
                "appearance_weight": 0.71,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Harvey Barnes",
                    "weight": 0.2254,
                    "already": 0,
                    "effective_weight": 0.2254,
                    "runner_up": "Lewis Hall",
                    "runner_up_effective_weight": 0.1787
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 2,
        "expected_goals": 1.69,
        "expected_assists": 1.1,
        "total_shots": 14,
        "shots_on_target": 4,
        "total_passes": 405,
        "interceptions": 6,
        "tackles": 13,
        "avg_rating": 6.87,
        "possession_estimated_pct": 50.0,
        "pressing_actions_per_90": 7.7
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Jean-Philippe Mateta",
        "attacker_role": "ST",
        "attacker_market_value": 29000000,
        "attacker_height": 192,
        "attacker_skill_quality": 0.71,
        "defenders": [
          "Sven Botman",
          "Malick Thiaw"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.774,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.2918,
        "xg_multiplier": 0.9132,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 2.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Sven Botman",
            "role": "CB",
            "market_value": 33000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Malick Thiaw",
            "role": "CB",
            "market_value": 46000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Jean-Philippe Mateta (ST) faces tough defensive resistance against Sven Botman and Malick Thiaw in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.91 (×1.00 = his usual level). Projected xG contribution: 0.292 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Ismaïla Sarr",
        "attacker_role": "SS",
        "attacker_market_value": 43000000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.796,
        "defenders": [
          "Nico González",
          "Sven Botman"
        ],
        "defender_roles": [
          "CDM",
          "CB"
        ],
        "def_skill_quality_avg": 0.788,
        "duel_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.237,
        "xg_contribution": 0.3411,
        "xg_multiplier": 0.9508,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.6,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Nico González",
            "role": "CDM",
            "market_value": 54000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.763
          },
          {
            "player": "Sven Botman",
            "role": "CB",
            "market_value": 33000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.763
          }
        ],
        "duel_analysis": "Ismaïla Sarr (SS) is evenly matched against Nico González and Sven Botman in a 2-defender block. Duel win probability: 24%.  Matchup xG multiplier ×0.95 (×1.00 = his usual level). Projected xG contribution: 0.341 — with neither side clearly dominant."
      },
      {
        "attacker": "Yéremy Pino",
        "attacker_role": "SS",
        "attacker_market_value": 27000000,
        "attacker_height": 172,
        "attacker_skill_quality": 0.694,
        "defenders": [
          "Nico González",
          "Sven Botman"
        ],
        "defender_roles": [
          "CDM",
          "CB"
        ],
        "def_skill_quality_avg": 0.788,
        "duel_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1126,
        "xg_multiplier": 0.8219,
        "shots_in_zone": 1.6,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Nico González",
            "role": "CDM",
            "market_value": 54000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Sven Botman",
            "role": "CB",
            "market_value": 33000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Yéremy Pino (SS) faces tough defensive resistance against Nico González and Sven Botman in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€27M vs €44M avg). Matchup xG multiplier ×0.82 (×1.00 = his usual level). Projected xG contribution: 0.113 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Tyrick Mitchell",
        "attacker_role": "LWB",
        "attacker_market_value": 23000000,
        "attacker_height": 174,
        "attacker_skill_quality": 0.66,
        "defenders": [
          "Lukáš Horníček"
        ],
        "defender_roles": [
          "GK"
        ],
        "def_skill_quality_avg": 0.677,
        "duel_zone": "Left Wingback vs Right Back — Overlapping Run",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.329,
        "xg_contribution": 0.0773,
        "xg_multiplier": 0.8664,
        "shots_in_zone": 0.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.6,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Lukáš Horníček",
            "role": "GK",
            "market_value": 25000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.8,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.671
          }
        ],
        "duel_analysis": "Tyrick Mitchell (LWB) faces tough defensive resistance against Lukáš Horníček in a direct 1v1 contest. Duel win probability: 33%.  Matchup xG multiplier ×0.87 (×1.00 = his usual level). Projected xG contribution: 0.077 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Daichi Kamada",
        "attacker_role": "RWB",
        "attacker_market_value": 10300000,
        "attacker_height": 184,
        "attacker_skill_quality": 0.526,
        "defenders": [
          "Lewis Hall"
        ],
        "defender_roles": [
          "LB"
        ],
        "def_skill_quality_avg": 0.831,
        "duel_zone": "Right Wingback vs Left Back — Overlapping Run",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.285,
        "xg_contribution": 0.0586,
        "xg_multiplier": 0.8309,
        "shots_in_zone": 0.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 2.4,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Lewis Hall",
            "role": "LB",
            "market_value": 52000000,
            "tackles_attempted": 2.3,
            "tackles_won": 2.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.715
          }
        ],
        "duel_analysis": "Daichi Kamada (RWB) faces tough defensive resistance against Lewis Hall in a direct 1v1 contest. Duel win probability: 28%. The quality gap is significant (€10M vs €52M avg). Matchup xG multiplier ×0.83 (×1.00 = his usual level). Projected xG contribution: 0.059 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Adam Wharton",
        "attacker_role": "CM",
        "attacker_market_value": 79000000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.881,
        "defenders": [
          "Nico González"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.837,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.447,
        "xg_contribution": 0.0736,
        "xg_multiplier": 0.9949,
        "shots_in_zone": 1.6,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.2,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Nico González",
            "role": "CDM",
            "market_value": 54000000,
            "tackles_attempted": 2.3,
            "tackles_won": 1.8,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.553
          }
        ],
        "duel_analysis": "Adam Wharton (CM) is evenly matched against Nico González in a direct 1v1 contest. Duel win probability: 45%. The quality gap is significant (€79M vs €54M avg). Matchup xG multiplier ×0.99 (×1.00 = his usual level). Projected xG contribution: 0.074 — with neither side clearly dominant."
      },
      {
        "attacker": "Anan Khalaili",
        "attacker_role": "CM",
        "attacker_market_value": 24000000,
        "attacker_height": 183,
        "attacker_skill_quality": 0.669,
        "defenders": [
          "Nico González"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.837,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.362,
        "xg_contribution": 0.0913,
        "xg_multiplier": 0.8709,
        "shots_in_zone": 1.5,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Nico González",
            "role": "CDM",
            "market_value": 54000000,
            "tackles_attempted": 2.3,
            "tackles_won": 1.9,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.638
          }
        ],
        "duel_analysis": "Anan Khalaili (CM) faces tough defensive resistance against Nico González in a direct 1v1 contest. Duel win probability: 36%. The quality gap is significant (€24M vs €54M avg). Matchup xG multiplier ×0.87 (×1.00 = his usual level). Projected xG contribution: 0.091 — and is restricted in space and time on the ball."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Joelinton",
        "attacker_role": "LW",
        "attacker_market_value": 21000000,
        "attacker_height": 186,
        "attacker_skill_quality": 0.641,
        "defenders": [
          "Axel Disasi"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.585,
        "duel_zone": "LW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.405,
        "xg_contribution": 0.0794,
        "xg_multiplier": 0.9786,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 4,
        "dribbles_successful": 1.4,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Axel Disasi",
            "role": "CB",
            "market_value": 15500000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.595
          }
        ],
        "duel_analysis": "Joelinton (LW) is evenly matched against Axel Disasi in a direct 1v1 contest. Duel win probability: 41%.  Matchup xG multiplier ×0.98 (×1.00 = his usual level). Projected xG contribution: 0.079 — with neither side clearly dominant."
      },
      {
        "attacker": "William Osula",
        "attacker_role": "ST",
        "attacker_market_value": 29000000,
        "attacker_height": 191,
        "attacker_skill_quality": 0.71,
        "defenders": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.631,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.217,
        "xg_contribution": 0.3393,
        "xg_multiplier": 1.0254,
        "shots_in_zone": 2.2,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 2.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Axel Disasi",
            "role": "CB",
            "market_value": 15500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.783
          },
          {
            "player": "Chris Richards",
            "role": "CB",
            "market_value": 25000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.783
          }
        ],
        "duel_analysis": "William Osula (ST) is evenly matched against Axel Disasi and Chris Richards in a 2-defender block. Duel win probability: 22%.  Matchup xG multiplier ×1.03 (×1.00 = his usual level). Projected xG contribution: 0.339 — with neither side clearly dominant."
      },
      {
        "attacker": "Yoane Wissa",
        "attacker_role": "ST",
        "attacker_market_value": 23000000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.66,
        "defenders": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.631,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.267,
        "xg_multiplier": 0.9038,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Axel Disasi",
            "role": "CB",
            "market_value": 15500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Chris Richards",
            "role": "CB",
            "market_value": 25000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Yoane Wissa (ST) faces tough defensive resistance against Axel Disasi and Chris Richards in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.90 (×1.00 = his usual level). Projected xG contribution: 0.267 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Harvey Barnes",
        "attacker_role": "ST",
        "attacker_market_value": 38000000,
        "attacker_height": 181,
        "attacker_skill_quality": 0.77,
        "defenders": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.631,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.204,
        "xg_contribution": 0.1586,
        "xg_multiplier": 1.0062,
        "shots_in_zone": 2.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 1.6,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Axel Disasi",
            "role": "CB",
            "market_value": 15500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.796
          },
          {
            "player": "Chris Richards",
            "role": "CB",
            "market_value": 25000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.796
          }
        ],
        "duel_analysis": "Harvey Barnes (ST) is evenly matched against Axel Disasi and Chris Richards in a 2-defender block. Duel win probability: 20%. The quality gap is significant (€38M vs €20M avg). Matchup xG multiplier ×1.01 (×1.00 = his usual level). Projected xG contribution: 0.159 — with neither side clearly dominant."
      },
      {
        "attacker": "Matías Fernández-Pardo",
        "attacker_role": "ST",
        "attacker_market_value": 60000000,
        "attacker_height": 183,
        "attacker_skill_quality": 0.853,
        "defenders": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.631,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.249,
        "xg_contribution": 0.1384,
        "xg_multiplier": 1.0727,
        "shots_in_zone": 2.3,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.8,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Axel Disasi",
            "role": "CB",
            "market_value": 15500000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.751
          },
          {
            "player": "Chris Richards",
            "role": "CB",
            "market_value": 25000000,
            "tackles_attempted": 1.1,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.751
          }
        ],
        "duel_analysis": "Matías Fernández-Pardo (ST) is slightly favored against Axel Disasi and Chris Richards in a 2-defender block. Duel win probability: 25%. The quality gap is significant (€60M vs €20M avg). Matchup xG multiplier ×1.07 (×1.00 = his usual level). Projected xG contribution: 0.138 — creating consistent moderate threat."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.709,
      "away_midfield_power": 0.737,
      "home_creative_power": 0.73,
      "away_creative_power": 0.626,
      "home_defensive_power": 0.658,
      "away_defensive_power": 0.626,
      "home_dominance_ratio": 0.49,
      "home_midfield_count": 4,
      "away_midfield_count": 3,
      "home_midfield_players": [
        "Tyrick Mitchell",
        "Daichi Kamada",
        "Adam Wharton",
        "Anan Khalaili"
      ],
      "away_midfield_players": [
        "Joelinton",
        "Nico González",
        "Lewis Miley"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 50.0,
      "estimated_possession_away_pct": 50.0,
      "home_pressing_actions_per_90": 7.9,
      "away_pressing_actions_per_90": 7.7,
      "home_key_passes_projected": 5.9,
      "away_key_passes_projected": 5.3,
      "home_throughball_threat": 2.8,
      "away_throughball_threat": 2.5,
      "key_personal_duel": "Adam Wharton vs Nico González",
      "midfield_lambda_factor_home": 1.003,
      "midfield_lambda_factor_away": 1.0
    },
    "formation_analysis": {
      "home_formation": "3-4-2-1",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": -0.05,
      "away_tactical_bonus": 0.05,
      "formation_verdict": "Tactical parity between 3-4-2-1 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.602,
    "away_lambda": 1.686,
    "home_top_threat_zones": [
      "Shadow Striker vs CDM + CB — Zone 14 Battle",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "home_player_antagonists": {
      "Jean-Philippe Mateta": {
        "opponents": [
          "Sven Botman",
          "Malick Thiaw"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Ismaïla Sarr": {
        "opponents": [
          "Nico González",
          "Sven Botman"
        ],
        "primary_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "source": "attacking_duel"
      },
      "Yéremy Pino": {
        "opponents": [
          "Nico González",
          "Sven Botman"
        ],
        "primary_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "source": "attacking_duel"
      },
      "Tyrick Mitchell": {
        "opponents": [
          "Lukáš Horníček",
          "Joelinton"
        ],
        "primary_zone": "Left Wingback vs Right Back — Overlapping Run",
        "source": "attacking_duel, midfield_pairing"
      },
      "Daichi Kamada": {
        "opponents": [
          "Lewis Hall",
          "Nico González"
        ],
        "primary_zone": "Right Wingback vs Left Back — Overlapping Run",
        "source": "attacking_duel, midfield_pairing"
      },
      "Adam Wharton": {
        "opponents": [
          "Nico González"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Anan Khalaili": {
        "opponents": [
          "Nico González",
          "Lewis Miley"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Axel Disasi": {
        "opponents": [
          "Joelinton",
          "William Osula",
          "Yoane Wissa",
          "Harvey Barnes",
          "Matías Fernández-Pardo"
        ],
        "primary_zone": "LW vs CB",
        "source": "defensive_duel"
      },
      "Chris Richards": {
        "opponents": [
          "William Osula",
          "Yoane Wissa",
          "Harvey Barnes",
          "Matías Fernández-Pardo"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Walter Benítez": {
        "opponents": [
          "Matías Fernández-Pardo",
          "Harvey Barnes"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Jaydee Canvot": {
        "opponents": [
          "William Osula"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Sven Botman": {
        "opponents": [
          "Jean-Philippe Mateta",
          "Ismaïla Sarr",
          "Yéremy Pino"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Malick Thiaw": {
        "opponents": [
          "Jean-Philippe Mateta"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Nico González": {
        "opponents": [
          "Ismaïla Sarr",
          "Yéremy Pino",
          "Adam Wharton",
          "Anan Khalaili",
          "Daichi Kamada"
        ],
        "primary_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "source": "defensive_duel, midfield_pairing"
      },
      "Lukáš Horníček": {
        "opponents": [
          "Tyrick Mitchell"
        ],
        "primary_zone": "Left Wingback vs Right Back — Overlapping Run",
        "source": "defensive_duel"
      },
      "Lewis Hall": {
        "opponents": [
          "Daichi Kamada"
        ],
        "primary_zone": "Right Wingback vs Left Back — Overlapping Run",
        "source": "defensive_duel"
      },
      "Joelinton": {
        "opponents": [
          "Axel Disasi",
          "Tyrick Mitchell"
        ],
        "primary_zone": "LW vs CB",
        "source": "attacking_duel, midfield_pairing"
      },
      "William Osula": {
        "opponents": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Yoane Wissa": {
        "opponents": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Harvey Barnes": {
        "opponents": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Matías Fernández-Pardo": {
        "opponents": [
          "Axel Disasi",
          "Chris Richards"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Lewis Miley": {
        "opponents": [
          "Anan Khalaili"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Adam Wharton vs Nico González will be the pivotal duel. Total antagonist xG — Home: 1.05, Away: 0.98. Home danger zone: Shadow Striker vs CDM + CB — Zone 14 Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.",
    "lambda_factors": {
      "league_anchor": 1.45,
      "home_advantage_factor": 1.15,
      "ha_source": "default",
      "home_gk_opposition_factor": 0.9123,
      "away_gk_opposition_factor": 1.0071,
      "home_set_piece_bonus": 0.18,
      "away_set_piece_bonus": 0.18,
      "home_defensive_solidity_vs": 0.8889,
      "away_defensive_solidity_vs": 0.944,
      "home_midfield_factor": 1.003,
      "away_midfield_factor": 1.0,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.6929,
      "away_avg_quality": 0.758,
      "avg_quality_gap": -0.0652,
      "squad_value_gap_log": -0.225,
      "top5_value_gap_log": -0.1671,
      "attack_value_gap_log": -0.0848,
      "elite_count_gap": -2,
      "combined_quality_gap": -0.1103,
      "stronger_lambda_boost": 0.0607,
      "weaker_lambda_suppression": 0.0353,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 1.0463,
          "n_duels": 7,
          "duel_confidence": 0.75,
          "result": 1.1472
        },
        {
          "label": "midfield_factor",
          "factor": 1.003,
          "result": 1.1507
        },
        {
          "label": "formation_bonus",
          "factor": 0.95,
          "result": 1.0931
        },
        {
          "label": "home_advantage",
          "factor": 1.15,
          "result": 1.2571
        },
        {
          "label": "standing_factor",
          "factor": 1.0363,
          "result": 1.3027
        },
        {
          "label": "gk_opposition",
          "factor": 0.9123,
          "result": 1.1885
        },
        {
          "label": "defensive_solidity",
          "factor": 0.8889,
          "result": 1.0564
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.18,
          "result": 1.2364
        },
        {
          "label": "engine_clamp",
          "pre": 1.2364,
          "result": 1.2364,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.1103,
          "factor": 0.9647,
          "pre": 1.2364,
          "result": 1.1928
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.1928
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.1705,
          "result": 1.3635
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": false,
          "reason": "non-target league or squad priors not found",
          "result": 1.3635
        },
        {
          "label": "router_clamp",
          "pre": 1.3635,
          "result": 1.364,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "second_leg",
          "applied": true,
          "factor": 1.2,
          "result": 1.637
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 0.9786,
          "pre": 1.637,
          "result": 1.602,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.602
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.602
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.602,
          "result": 1.602,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": false,
          "reason": "no_sofascore_matches_data",
          "samples": 0,
          "scale": 1.0,
          "observed_total_goals": 0.0,
          "result": 1.602
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.9827,
          "n_duels": 5,
          "duel_confidence": 0.75,
          "result": 1.0995
        },
        {
          "label": "midfield_factor",
          "factor": 1.0,
          "result": 1.0995
        },
        {
          "label": "formation_bonus",
          "factor": 1.05,
          "result": 1.1545
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 1.1545
        },
        {
          "label": "standing_factor",
          "factor": 1.0937,
          "result": 1.2627
        },
        {
          "label": "gk_opposition",
          "factor": 1.0071,
          "result": 1.2716
        },
        {
          "label": "defensive_solidity",
          "factor": 0.944,
          "result": 1.2004
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.18,
          "result": 1.3804
        },
        {
          "label": "engine_clamp",
          "pre": 1.3804,
          "result": 1.3804,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.1103,
          "factor": 1.0607,
          "pre": 1.3804,
          "result": 1.4642
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.4642
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.1547,
          "result": 1.6187
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": false,
          "reason": "non-target league or squad priors not found",
          "result": 1.6187
        },
        {
          "label": "router_clamp",
          "pre": 1.6187,
          "result": 1.619,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "second_leg",
          "applied": true,
          "factor": 1.02,
          "result": 1.651
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 1.0214,
          "pre": 1.651,
          "result": 1.6863,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.686
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.686
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.686,
          "result": 1.686,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": false,
          "reason": "no_sofascore_matches_data",
          "samples": 0,
          "scale": 1.0,
          "observed_total_goals": 0.0,
          "result": 1.686
        }
      ],
      "home_bench_lambda_bonus": 0.1705,
      "away_bench_lambda_bonus": 0.1547,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": false,
      "competitive_underdog_floor": 1.0,
      "competitive_underdog_floor_mode": "disabled_ablation",
      "pre_competitive_floor_home_lambda": 1.602,
      "pre_competitive_floor_away_lambda": 1.686,
      "pre_calibration_home_lambda": 1.3635,
      "pre_calibration_away_lambda": 1.6187,
      "competition_calibration_applied": false,
      "competition_calibration_reason": "no_sofascore_matches_data",
      "competition_calibration_samples": 0,
      "competition_observed_total_goals": 0.0,
      "competition_calibration_scale": 1.0,
      "neutral_share_preserved": false,
      "final_home_lambda": 1.602,
      "final_away_lambda": 1.686
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 14,
    "opponent_position": 11,
    "standing_lambda_multiplier": 1.0363,
    "attack_index": 1.011,
    "defense_concede_index": 1.083,
    "form_multiplier": 0.995,
    "team_attack_rate_contextual": 1.47,
    "opp_defense_rate_contextual": 1.57,
    "team_ppg": 1.16,
    "opponent_ppg": 1.24
  },
  "away_standing": {
    "available": true,
    "team_position": 11,
    "opponent_position": 14,
    "standing_lambda_multiplier": 1.0937,
    "attack_index": 0.945,
    "defense_concede_index": 1.318,
    "form_multiplier": 1.005,
    "team_attack_rate_contextual": 1.37,
    "opp_defense_rate_contextual": 1.91,
    "team_ppg": 1.24,
    "opponent_ppg": 1.16
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Crystal Palace vs Newcastle. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 3-4-2-1 vs 4-2-3-1 (duel lambdas: Home 1.364, Away 1.619). Final calibrated Poisson lambdas: Home 1.602, Away 1.686 (most likely score 1-2).",
    "competition": "Premier League",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 11,
      "home_fbref_players": 9,
      "away_starters_count": 11,
      "away_xgboost_players": 11,
      "away_fbref_players": 8,
      "home_bench_modelled": 7,
      "away_bench_modelled": 7
    },
    "team_priors": {
      "applied": false,
      "reason": "Non-target league or squad priors not found"
    },
    "pipeline_stages": [
      "1. XGBoost player regressions for volume & event rates with market-value quality scaling",
      "2. Multi-source prior blending (FBref 2026-2027 tables + Sofascore season history)",
      "3. Antagonist formation duel matrix resolving 1v1 and zonal matchups",
      "4. Team-level prior calibration (FBref possession and attack/defense efficiencies)",
      "5. Bivariate Poisson matrix with Dixon-Coles low-score correction"
    ],
    "final_lambdas": {
      "home_lambda": 1.602,
      "away_lambda": 1.686,
      "micro_duel_home_lambda": 1.364,
      "micro_duel_away_lambda": 1.619
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-25T13:31:31Z",
  "outcome_baseline": null,
  "stat_limits": {
    "saves": 15.0,
    "goalsPrevented": 5.0,
    "keeperSaveValue": 3.0,
    "interceptionWon": 10.0,
    "totalTackle": 12.0,
    "wonTackle": 10.0,
    "totalClearance": 18.0,
    "aerialWon": 15.0,
    "aerialLost": 12.0,
    "totalPass": 150.0,
    "accuratePass": 145.0,
    "keyPass": 8.0,
    "expectedAssists": 1.5,
    "goalAssist": 4.0,
    "expectedGoals": 3.0,
    "expectedGoalsOnTarget": 6.0,
    "xgot": 6.0,
    "goals": 5.0,
    "totalShots": 12.0,
    "onTargetScoringAttempt": 8.0,
    "shotOffTarget": 8.0,
    "rating": 10.0,
    "minutesPlayed": 130.0,
    "duelWon": 20.0,
    "duelLost": 20.0,
    "ballRecovery": 18.0,
    "fouls": 12.0
  }
}