{
  "match_info": {
    "home_team": "Sunderland",
    "away_team": "Brighton",
    "tournament": "Premier League",
    "date": "20261010",
    "timezone": "America/New_York",
    "home_formation": "4-2-3-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.0884,
    "match_resolution": "regulation",
    "predicted_winner": "Brighton",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2495,
      "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,
      "reason": "Tie-breaker not required for this match context."
    },
    "top_5_scorelines": [
      {
        "score": "1-2",
        "probability": 0.0884
      },
      {
        "score": "1-1",
        "probability": 0.1169
      },
      {
        "score": "0-1",
        "probability": 0.0847
      },
      {
        "score": "2-1",
        "probability": 0.0787
      },
      {
        "score": "1-0",
        "probability": 0.0752
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.057,
      "0-1": 0.0847,
      "0-2": 0.0652,
      "0-3": 0.0331,
      "0-4": 0.0126,
      "0-5": 0.0038,
      "0-6": 0.001,
      "1-0": 0.0752,
      "1-1": 0.1169,
      "1-2": 0.0884,
      "1-3": 0.0449,
      "1-4": 0.0171,
      "1-5": 0.0052,
      "1-6": 0.0013,
      "2-0": 0.0516,
      "2-1": 0.0787,
      "2-2": 0.0599,
      "2-3": 0.0304,
      "2-4": 0.0116,
      "2-5": 0.0035,
      "2-6": 0.0009,
      "3-0": 0.0233,
      "3-1": 0.0356,
      "3-2": 0.0271,
      "3-3": 0.0138,
      "3-4": 0.0052,
      "3-5": 0.0016,
      "4-0": 0.0079,
      "4-1": 0.0121,
      "4-2": 0.0092,
      "4-3": 0.0047,
      "4-4": 0.0018,
      "4-5": 0.0005,
      "5-0": 0.0021,
      "5-1": 0.0033,
      "5-2": 0.0025,
      "5-3": 0.0013,
      "6-1": 0.0007,
      "6-2": 0.0006
    },
    "outcome": {
      "home_win": 0.3377,
      "draw": 0.2495,
      "away_win": 0.4128
    },
    "markets": {
      "over_2_5_goals": 0.5494,
      "under_2_5_goals": 0.4506,
      "btts_yes": 0.5815,
      "btts_no": 0.4185,
      "home_clean_sheet": 0.2178,
      "away_clean_sheet": 0.2577
    },
    "home_ratings": {
      "DR": 6.76,
      "MCR": 7.01,
      "ATR": 6.71,
      "GK": 6.98
    },
    "away_ratings": {
      "DR": 7.01,
      "MCR": 6.97,
      "ATR": 6.87,
      "GK": 7.02
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Sunderland vs Brighton. Most likely scoreline: 1-2. Lambdas derived from 5 home and 5 away individual player duels.",
      "key_player": "Projected scorer(s): Wilson Isidor, Charalampos Kostoulas, Pascal Groß",
      "tactical_analysis": "Tactical parity between 4-2-3-1 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Noah Sadiki vs Yasin Ayari will be the pivotal duel. Total antagonist xG — Home: 0.71, Away: 0.93. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.71,
    "home_lambda": 1.356,
    "away_lambda": 1.524,
    "h2h": {
      "available": false,
      "meetings": 0,
      "home_wins": 0,
      "away_wins": 0,
      "draws": 0,
      "home_multiplier": 1.0,
      "away_multiplier": 1.0
    },
    "modal_scoreline": "1-1",
    "modal_scoreline_probability": 0.1169,
    "headline_policy": "decisive_score_substitution"
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.3377,
      "draw": 0.2495,
      "away_win": 0.4128
    },
    "favorite": "Brighton",
    "favorite_win_probability": 0.4128,
    "fair_spread": -0.168,
    "fair_total": 2.88,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Sunderland",
        "estimate": 1.356,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Brighton",
        "estimate": 1.524,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.5494,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.5815,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Sunderland",
        "estimate": 1.0,
        "probability": 0.2178,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Brighton",
        "estimate": 1.0,
        "probability": 0.2577,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Wilson Isidor (Sunderland)",
        "estimate": 0.2663,
        "probability": 0.2338,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Charalampos Kostoulas (Brighton)",
        "estimate": 0.3168,
        "probability": 0.2715,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Granit Xhaka (Sunderland)",
        "estimate": 0.197,
        "probability": 0.1788,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Maxim De Cuyper (Brighton)",
        "estimate": 0.2299,
        "probability": 0.2054,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "high",
      "expected_total_goals": 2.88,
      "expected_total_shots": 31,
      "expected_total_passes": 926,
      "expected_pressing_actions_per_90": 15.3,
      "possession_home_pct": 50.2,
      "possession_away_pct": 49.8,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Brighton",
      "favorite_win_probability": 0.4128,
      "script": "Brighton is the fair winner side, but the baseline remains narrow: fair spread -0.17 goals and fair total 2.88.",
      "first_half": "Expect high tempo while both sides test the matchup thesis; shot baseline is about 16 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Sunderland must keep the match inside one goal.",
      "late_game": "A Brighton lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Brighton chance creation leans on Charalampos Kostoulas against Kevin Danso, Thomas Meunier in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Sunderland: starters carry the main goal usage through Wilson Isidor; bench watchlist: Brian Brobbey, Habib Diarra, Malick Fofana.",
      "Brighton: starters carry the main goal usage through Charalampos Kostoulas, Pascal Groß; bench watchlist: Yankuba Minteh, Evan Ferguson.",
      "Assist usage should flow through Thomas Meunier, Maxim De Cuyper; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Brighton tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects high tempo, about 16 total first-half shots, and 1.44 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 Sunderland 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 Brighton.",
      "Sunderland 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": {
    "Sunderland": {
      "formation": "4-2-3-1",
      "players": {
        "Robin Roefs": {
          "player_id": 1012928,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 22,
          "height": 193,
          "market_value": 29000000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.0986,
            "rating": 6.978,
            "minutes": 90,
            "total_pass": 37,
            "accurate_pass": 24,
            "total_long_balls": 20,
            "accurate_long_balls": 7,
            "touches": 46,
            "clearances": 1,
            "ball_recovery": 7,
            "high_claims": 1,
            "punches": 1.3945,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 12.7989,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 19,
            "gk_engine_opponent_lambda": 1.5239,
            "shots_faced": 14.5,
            "expected_saves": 3.55,
            "high_pressure_saves": 1.22,
            "opponent_faced": "Charalampos Kostoulas, Pascal Groß",
            "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": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 5.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 29,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 4,
                "saves": 1,
                "goals_prevented": -2.774
              },
              "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 16,
                "clearances": 1,
                "ball_recovery": 3,
                "saves": 3,
                "goals_prevented": -0.0857
              },
              "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 24,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 13,
                "saves": 1,
                "goals_prevented": 0.0749
              },
              "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 25,
                "clearances": 2,
                "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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 35,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 8,
                "saves": 1,
                "goals_prevented": -0.3712
              },
              "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 17,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": -0.5938
              },
              "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 25,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 3,
                "goals_prevented": -0.0063
              },
              "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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0045,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 24,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 9,
                "saves": 1,
                "goals_prevented": 0.0855
              },
              "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 14,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 9,
                "saves": 6,
                "goals_prevented": 0.5544
              },
              "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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 5.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 26,
                "ball_recovery": 5,
                "saves": 2,
                "goals_prevented": -3.6679
              },
              "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": 1022,
            "combined_rank_score": 454.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 382.0,
            "sofascore_rating": 6.96,
            "sofascore_appearances": 35.0,
            "fifa_rank": 527.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.978,
            "source_file": "data/player_rankings.csv",
            "player_name": "Robin Roefs",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Min-hyeok Kim",
                  "ranking": 1017
                },
                {
                  "player_name": "Tim Hartzell",
                  "ranking": 1018
                },
                {
                  "player_name": "Dae-kwang Lee",
                  "ranking": 1019
                },
                {
                  "player_name": "Stanislav Iljutcenko",
                  "ranking": 1020
                },
                {
                  "player_name": "Yan Diomande",
                  "ranking": 1021
                }
              ],
              "lower": [
                {
                  "player_name": "Andrea Cambiaso",
                  "ranking": 1023
                },
                {
                  "player_name": "Clarismario",
                  "ranking": 1024
                },
                {
                  "player_name": "Milan Obradović",
                  "ranking": 1025
                },
                {
                  "player_name": "Álvaro Carreras",
                  "ranking": 1026
                },
                {
                  "player_name": "Mamadou Sangare",
                  "ranking": 1027
                }
              ]
            }
          },
          "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"
            ],
            "market_value_adjustment": 1.0068,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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 40 historical appearances across 3 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, 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": 2.9181,
                "goals_prevented": 0.0979,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.3735,
                "accurate_pass": 23.9065,
                "total_long_balls": 19.491,
                "accurate_long_balls": 7.1473,
                "touches": 45.2801,
                "clearances": 1.2524,
                "ball_recovery": 7.2839,
                "high_claims": 0.9339,
                "punches": 1.3851,
                "aerial_won": 0.4129,
                "sweeper_actions": 0.5167,
                "sweeper_accurate": 0.5167,
                "saves_inside_box": 1.6086,
                "possession_lost": 12.7125,
                "duels_won": 0.9685,
                "duels_lost": 0.0072,
                "total_contest": 0.0939,
                "won_contest": 0.0939,
                "fouls": 0.0,
                "fouls_drawn": 0.5536,
                "total_own_half_passes": 20.3719,
                "accurate_own_half_passes": 19.1101
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-10T10:04:18.353158+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 199,
                    "rows": 6796
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 5.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 5.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 0.342,
                  "distribution_accuracy": 0.9307,
                  "sweeper_accuracy": 0.3369,
                  "goalkeeperValueNormalized": -0.0742,
                  "save_contribution": 1.3956,
                  "accurateKeeperSweeper": 0.5167
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.918079137802124,
                    "model_output": 2.9181,
                    "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.0588
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0422
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.029
                        },
                        {
                          "name": "goodHighClaim",
                          "contribution": 0.0129
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.0013,
                      "total": 2.9181,
                      "log_link": true,
                      "margin_base": 1.074537,
                      "item_margins": [
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.019895
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.014218
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.009905
                        },
                        {
                          "name": "goodHighClaim",
                          "margin": 0.004423
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.003333
                        }
                      ],
                      "others_margin": -0.000475
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.09794417768716812,
                    "model_output": 0.0979,
                    "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": "goalkeeperValueNormalized",
                          "contribution": 0.1064
                        },
                        {
                          "name": "punches",
                          "contribution": -0.0547
                        },
                        {
                          "name": "save_contribution",
                          "contribution": 0.029
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0233
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0182
                        }
                      ],
                      "others": 0.0753,
                      "total": 0.0979,
                      "log_link": false,
                      "margin_base": -0.016613,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.106448
                        },
                        {
                          "name": "punches",
                          "margin": -0.054663
                        },
                        {
                          "name": "save_contribution",
                          "margin": 0.028972
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.023262
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.018183
                        }
                      ],
                      "others_margin": 0.075245
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.97802734375,
                    "model_output": 6.978,
                    "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.0483
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0204
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0198
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": 0.015
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0146
                        }
                      ],
                      "others": -0.0688,
                      "total": 6.978,
                      "log_link": false,
                      "margin_base": 7.009122,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.048314
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.02042
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.019823
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": 0.015004
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.014584
                        }
                      ],
                      "others_margin": -0.068754
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 40,
                  "role_matches": 40,
                  "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.0068, quality 0.710)",
              "stats": {
                "saves": 2.9379,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5574,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24
              },
              "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.9144,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5568,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24
              },
              "params": {
                "blend_weight": 0.0096,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.9379,
                  "after": 2.9144
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.9144,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5568,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24
              },
              "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.9144,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5568,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24,
                "gk_engine_opponent_lambda": 1.5239,
                "shots_faced": 14.5,
                "expected_saves": 3.55,
                "high_pressure_saves": 1.22,
                "opponent_faced": "Charalampos Kostoulas, Pascal Groß",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Charalampos Kostoulas, Pascal Groß",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.5239
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "saves": 2.9144,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5568,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24,
                "gk_engine_opponent_lambda": 1.5239,
                "shots_faced": 14.5,
                "expected_saves": 3.55,
                "high_pressure_saves": 1.22,
                "opponent_faced": "Charalampos Kostoulas, Pascal Groß",
                "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.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 2 by projected rating, fifa_overall 81.0; not used by the projection)",
              "stats": {
                "saves": 2.9144,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5568,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24,
                "gk_engine_opponent_lambda": 1.5239,
                "shots_faced": 14.5,
                "expected_saves": 3.55,
                "high_pressure_saves": 1.22,
                "opponent_faced": "Charalampos Kostoulas, Pascal Groß",
                "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": 81.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1022,
                "fifa_rank": 527.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": {
                "saves": 2.9144,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5568,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24,
                "gk_engine_opponent_lambda": 1.5239,
                "shots_faced": 14.5,
                "expected_saves": 3.55,
                "high_pressure_saves": 1.22,
                "opponent_faced": "Charalampos Kostoulas, Pascal Groß",
                "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": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.9144,
                "goals_prevented": 0.0986,
                "rating": 6.978,
                "minutes": 90.0,
                "total_pass": 36.6208,
                "accurate_pass": 24.0691,
                "total_long_balls": 19.6235,
                "accurate_long_balls": 7.1959,
                "touches": 45.588,
                "clearances": 1.2609,
                "ball_recovery": 7.3334,
                "high_claims": 0.9403,
                "punches": 1.3945,
                "aerial_won": 0.4157,
                "sweeper_actions": 0.5202,
                "sweeper_accurate": 0.5202,
                "saves_inside_box": 1.6195,
                "possession_lost": 12.7989,
                "duels_won": 0.9751,
                "duels_lost": 0.0072,
                "total_contest": 0.0945,
                "won_contest": 0.0945,
                "fouls": 0.0,
                "fouls_drawn": 0.5568,
                "total_own_half_passes": 20.5104,
                "accurate_own_half_passes": 19.24,
                "gk_engine_opponent_lambda": 1.5239,
                "shots_faced": 14.5,
                "expected_saves": 3.55,
                "high_pressure_saves": 1.22,
                "opponent_faced": "Charalampos Kostoulas, Pascal Groß",
                "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": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Nordi Mukiele": {
          "player_id": 780014,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 20,
          "height": 185,
          "market_value": 15200000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.8319,
            "minutes": 88,
            "total_pass": 37,
            "accurate_pass": 29,
            "duels_won": 6,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 14,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 63,
            "possession_lost": 14.1477,
            "dispossessed": 0.441,
            "duels_lost": 5,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0849,
            "goals": 0,
            "assist_rate": 0.0415,
            "assists": 0,
            "expected_goals": 0.1523,
            "expected_assists": 0.1041,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1607,
            "ball_carries": 15,
            "total_progression": 61,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 1,
            "opponent_faced": "Charalampos Kostoulas",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.1413,
            "projected_assists": 0,
            "assist_probability": 0.0989,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.2268,
                "total_shots": 1,
                "total_pass": 35,
                "accurate_pass": 28,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 4,
                "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7035,
                "expected_assists": 0.0196,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 14,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0162,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 19,
                "tackles": 4,
                "tackles_won": 4,
                "clearances": 9,
                "aerial_won": 5,
                "duels_won": 11,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0114,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 37,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 14,
                "aerial_won": 2,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0981,
                "expected_assists": 0.3621,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 5,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0275,
                "expected_assists": 0.0293,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 67,
                "accurate_pass": 60,
                "key_pass": 1,
                "clearances": 5,
                "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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0245,
                "expected_assists": 0.0231,
                "total_shots": 1,
                "total_pass": 69,
                "accurate_pass": 58,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1875,
                "expected_assists": 0.0391,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 24,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 7,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0996,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 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": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0283,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 4,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 425,
            "combined_rank_score": 261.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 21.0,
            "sofascore_rating": 8.1,
            "sofascore_appearances": 1.0,
            "fifa_rank": 501.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8319,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nordi Mukiele",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alex Sandro",
                  "ranking": 420
                },
                {
                  "player_name": "Ismoilbek Usmonxo'jayev",
                  "ranking": 421
                },
                {
                  "player_name": "Seok-joo Yoon",
                  "ranking": 422
                },
                {
                  "player_name": "Harry Wilson",
                  "ranking": 423
                },
                {
                  "player_name": "Christos Tzolis",
                  "ranking": 424
                }
              ],
              "lower": [
                {
                  "player_name": "Dani Olmo",
                  "ranking": 426
                },
                {
                  "player_name": "Piotr Zieliński",
                  "ranking": 427
                },
                {
                  "player_name": "Anvar Gofurov",
                  "ranking": 428
                },
                {
                  "player_name": "Ibrokhimkhalil Yuldoshev",
                  "ranking": 429
                },
                {
                  "player_name": "Iliman Ndiaye",
                  "ranking": 430
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 36,
          "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": 36,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0028,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 90.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "XGBoost regressor (D_service) evaluated 36 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, rel: 0.07, 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.1902,
                "tackles": 1.9798,
                "tackles_won": 1.2357,
                "clearances": 3.8396,
                "aerial_won": 1.638,
                "total_shots": 1.0796,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.685,
                "accurate_pass": 28.9434,
                "duels_won": 5.5763,
                "total_long_balls": 3.468,
                "accurate_long_balls": 1.5253,
                "total_own_half_passes": 16.3881,
                "accurate_own_half_passes": 14.6505,
                "total_opp_half_passes": 20.297,
                "accurate_opp_half_passes": 14.293,
                "crosses_total": 3.2052,
                "crosses_accurate": 0.8773,
                "touches": 62.531,
                "possession_lost": 14.1082,
                "dispossessed": 0.4398,
                "duels_lost": 4.9177,
                "aerial_lost": 2.3637,
                "total_contest": 0.9299,
                "won_contest": 0.5724,
                "ball_recovery": 4.1227,
                "challenges_lost": 0.5933,
                "fouls": 1.2912,
                "fouls_drawn": 0.7011,
                "blocks": 0.5921,
                "goals": 0.0852,
                "goal_rate": 0.0852,
                "assists": 0.0416,
                "assist_rate": 0.0416,
                "expected_goals": 0.1367,
                "expected_assists": 0.0934,
                "shots_on_target": 0.2127,
                "big_chances_created": 0.2358,
                "xgot": 0.1443,
                "ball_carries": 14.6636,
                "total_progression": 60.5586,
                "progressive_carries": 1.1701,
                "key_pass": 0.6869,
                "shots_off_target": 0.8669
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 5.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.6439,
                  "aerialWon": 1.9299,
                  "totalClearance_p90": 4.6501,
                  "totalTackle": 2.444,
                  "totalPass": 36.685
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1902379989624023,
                    "model_output": 1.1902,
                    "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.1183
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0725
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0297
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0253
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0121
                        }
                      ],
                      "others": 0.075,
                      "total": 1.1902,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129269
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.071661
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.027957
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.023204
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.010935
                        }
                      ],
                      "others_margin": 0.065127
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.9798352718353271,
                    "model_output": 1.9798,
                    "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.1741
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0887
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0804
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0831
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0498
                        }
                      ],
                      "others": 0.1098,
                      "total": 1.9798,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117692
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.055017
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.047379
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.046721
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.02697
                        }
                      ],
                      "others_margin": 0.057146
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2357163429260254,
                    "model_output": 1.2357,
                    "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.1045
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0853
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0804
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0414
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0319
                        }
                      ],
                      "others": 0.0378,
                      "total": 1.2357,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115387
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.085254
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.074199
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.036156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.026994
                        }
                      ],
                      "others_margin": 0.031074
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.83961820602417,
                    "model_output": 3.8396,
                    "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": "opp_half_pass_pct",
                          "contribution": -0.4089
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4011
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3435
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1871
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1254
                        }
                      ],
                      "others": -0.26,
                      "total": 3.8396,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.126104
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12384
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.095077
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.048218
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.031068
                        }
                      ],
                      "others_margin": -0.065509
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.6380000114440918,
                    "model_output": 1.638,
                    "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.2335
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1811
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1235
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1223
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0631
                        }
                      ],
                      "others": -0.3413,
                      "total": 1.638,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.156089
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.106249
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.066456
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.061774
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.031385
                        }
                      ],
                      "others_margin": -0.18926
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0795705318450928,
                    "model_output": 1.0796,
                    "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.4031
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0802
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0349
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0276
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0274
                        }
                      ],
                      "others": 0.0905,
                      "total": 1.0796,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.403113
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.080214
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.034942
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.027581
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.027396
                        }
                      ],
                      "others_margin": 0.090355
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.831879615783691,
                    "model_output": 6.8319,
                    "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.0378
                        },
                        {
                          "name": "touches",
                          "contribution": 0.019
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0132
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0129
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0112
                        }
                      ],
                      "others": 0.0015,
                      "total": 6.8319,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.037819
                        },
                        {
                          "name": "touches",
                          "margin": 0.019039
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.01324
                        },
                        {
                          "name": "rating",
                          "margin": 0.012893
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.011242
                        }
                      ],
                      "others_margin": 0.001478
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "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.0028, quality 0.581)",
              "stats": {
                "interceptions": 1.1936,
                "tackles": 1.9854,
                "tackles_won": 1.2392,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0826,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2142,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.2948,
                "fouls_drawn": 0.7031,
                "blocks": 0.5938,
                "goals": 0.0854,
                "goal_rate": 0.0854,
                "assists": 0.0417,
                "assist_rate": 0.0417,
                "expected_goals": 0.1371,
                "expected_assists": 0.0937,
                "shots_on_target": 0.2133,
                "big_chances_created": 0.2365,
                "xgot": 0.1447,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693
              },
              "params": {
                "market_value_eur": 15200000,
                "quality_factor": 0.5814,
                "boost_factor": 1.0028,
                "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.0053)",
              "stats": {
                "interceptions": 1.1924,
                "tackles": 1.9854,
                "tackles_won": 1.2326,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0769,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2024,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.288,
                "fouls_drawn": 0.6994,
                "blocks": 0.5938,
                "goals": 0.0849,
                "goal_rate": 0.0849,
                "assists": 0.0415,
                "assist_rate": 0.0415,
                "expected_goals": 0.1371,
                "expected_assists": 0.0937,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.2365,
                "xgot": 0.1447,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693
              },
              "params": {
                "blend_weight": 0.0053,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9759,
                "prior_reliability": 0.0667,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 3.2142,
                  "after": 3.2024
                },
                {
                  "stat": "fouls",
                  "before": 1.2948,
                  "after": 1.288
                },
                {
                  "stat": "wonTackle",
                  "before": 1.2392,
                  "after": 1.2326
                },
                {
                  "stat": "totalShots",
                  "before": 1.0826,
                  "after": 1.0769
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1924,
                "tackles": 1.9854,
                "tackles_won": 1.2326,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0815,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2024,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.288,
                "fouls_drawn": 0.6994,
                "blocks": 0.5938,
                "goals": 0.0849,
                "goal_rate": 0.0849,
                "assists": 0.0415,
                "assist_rate": 0.0415,
                "expected_goals": 0.1371,
                "expected_assists": 0.0937,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.2365,
                "xgot": 0.1447,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693
              },
              "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.1924,
                "tackles": 1.9854,
                "tackles_won": 1.2326,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0815,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2024,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.288,
                "fouls_drawn": 0.6994,
                "blocks": 0.5938,
                "goals": 0.0849,
                "goal_rate": 0.0849,
                "assists": 0.0415,
                "assist_rate": 0.0415,
                "expected_goals": 0.1371,
                "expected_assists": 0.0937,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.2365,
                "xgot": 0.1447,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693,
                "opponent_faced": "Charalampos Kostoulas",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Charalampos Kostoulas",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "interceptions": 1.1924,
                "tackles": 1.9854,
                "tackles_won": 1.2326,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0815,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2024,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.288,
                "fouls_drawn": 0.6994,
                "blocks": 0.5938,
                "goal_rate": 0.0849,
                "goals": 0,
                "assist_rate": 0.0415,
                "assists": 0,
                "expected_goals": 0.1523,
                "expected_assists": 0.1041,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.2365,
                "xgot": 0.1607,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693,
                "opponent_faced": "Charalampos Kostoulas",
                "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.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1371,
                  "after": 0.1523
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0937,
                  "after": 0.1041
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 6 by projected rating, fifa_overall 81.0; not used by the projection)",
              "stats": {
                "interceptions": 1.1924,
                "tackles": 1.9854,
                "tackles_won": 1.2326,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0815,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2024,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.288,
                "fouls_drawn": 0.6994,
                "blocks": 0.5938,
                "goal_rate": 0.0849,
                "goals": 0,
                "assist_rate": 0.0415,
                "assists": 0,
                "expected_goals": 0.1523,
                "expected_assists": 0.1041,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.2365,
                "xgot": 0.1607,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693,
                "opponent_faced": "Charalampos Kostoulas",
                "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": 81.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": 425,
                "fifa_rank": 501.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": {
                "interceptions": 1.1924,
                "tackles": 1.9854,
                "tackles_won": 1.2326,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0815,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2024,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.288,
                "fouls_drawn": 0.6994,
                "blocks": 0.5938,
                "goal_rate": 0.0849,
                "goals": 0,
                "assist_rate": 0.0415,
                "assists": 0,
                "expected_goals": 0.1523,
                "expected_assists": 0.1041,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.2365,
                "xgot": 0.1607,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693,
                "opponent_faced": "Charalampos Kostoulas",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.1413,
                "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": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1413,
                "scorer_weight": 0.1218,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0958,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.1924,
                "tackles": 1.9854,
                "tackles_won": 1.2326,
                "clearances": 3.8504,
                "aerial_won": 1.6426,
                "total_shots": 1.0815,
                "rating": 6.8319,
                "minutes": 87.83,
                "total_pass": 36.7877,
                "accurate_pass": 29.0244,
                "duels_won": 5.5919,
                "total_long_balls": 3.4777,
                "accurate_long_balls": 1.5296,
                "total_own_half_passes": 16.434,
                "accurate_own_half_passes": 14.6915,
                "total_opp_half_passes": 20.3538,
                "accurate_opp_half_passes": 14.333,
                "crosses_total": 3.2024,
                "crosses_accurate": 0.8798,
                "touches": 62.7061,
                "possession_lost": 14.1477,
                "dispossessed": 0.441,
                "duels_lost": 4.9315,
                "aerial_lost": 2.3703,
                "total_contest": 0.9325,
                "won_contest": 0.574,
                "ball_recovery": 4.1342,
                "challenges_lost": 0.595,
                "fouls": 1.288,
                "fouls_drawn": 0.6994,
                "blocks": 0.5938,
                "goal_rate": 0.0849,
                "goals": 0,
                "assist_rate": 0.0415,
                "assists": 0,
                "expected_goals": 0.1523,
                "expected_assists": 0.1041,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.2365,
                "xgot": 0.1607,
                "ball_carries": 14.7047,
                "total_progression": 60.7282,
                "progressive_carries": 1.1734,
                "key_pass": 0.6888,
                "shots_off_target": 0.8693,
                "opponent_faced": "Charalampos Kostoulas",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.1413,
                "projected_assists": 0,
                "assist_probability": 0.0989,
                "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.0989,
                "provider_weight": 0.0833,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0823,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Kevin Danso": {
          "player_id": 794953,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 190,
          "market_value": 19400000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 3,
            "total_shots": 1,
            "rating": 6.8361,
            "minutes": 89,
            "total_pass": 52,
            "accurate_pass": 44,
            "duels_won": 5,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 34,
            "accurate_own_half_passes": 31,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 13,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 70,
            "possession_lost": 10.9103,
            "dispossessed": 0.0956,
            "duels_lost": 4,
            "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.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0498,
            "expected_assists": 0.0314,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0271,
            "ball_carries": 18,
            "total_progression": 66,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.76,
            "opponent_faced": "Charalampos Kostoulas",
            "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.0486,
            "projected_assists": 0,
            "assist_probability": 0.0309,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 5.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0677,
                "expected_assists": 0.0054,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 62,
                "accurate_pass": 50,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0827,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "key_pass": 1,
                "clearances": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0759,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 35,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 7,
                "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": 14023967,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Tottenham Hotspur",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1966,
                "expected_assists": 0.0059,
                "total_shots": 4,
                "shots_off_target": 2,
                "total_pass": 47,
                "accurate_pass": 43,
                "interceptions": 1,
                "clearances": 10,
                "aerial_won": 5,
                "duels_won": 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": 16087727,
              "match_date": "2026-05-19",
              "home_team": "Chelsea",
              "away_team": "Tottenham Hotspur",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Tottenham Hotspur",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0068,
                "total_shots": 0,
                "total_pass": 73,
                "accurate_pass": 67,
                "tackles": 1,
                "interceptions": 6,
                "clearances": 4,
                "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": 14023944,
              "match_date": "2026-05-11",
              "home_team": "Tottenham Hotspur",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Tottenham Hotspur",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0399,
                "expected_assists": 0.0228,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 62,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 8,
                "duels_won": 9,
                "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": 14023927,
              "match_date": "2026-05-03",
              "home_team": "Aston Villa",
              "away_team": "Tottenham Hotspur",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Tottenham Hotspur",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0889,
                "expected_assists": 0.0029,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 62,
                "accurate_pass": 56,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 6,
                "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": 14024022,
              "match_date": "2026-04-25",
              "home_team": "Wolverhampton",
              "away_team": "Tottenham Hotspur",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Tottenham Hotspur",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0336,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 54,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "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": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Tottenham Hotspur",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 29,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025026,
              "match_date": "2026-04-12",
              "home_team": "Sunderland",
              "away_team": "Tottenham Hotspur",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Tottenham Hotspur",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 20,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 18,
                "tackles": 2,
                "clearances": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1188,
            "combined_rank_score": 523.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 180.0,
            "sofascore_rating": 7.2333,
            "sofascore_appearances": 6.0,
            "fifa_rank": 867.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.8361,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kevin Danso",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pijus Širvys",
                  "ranking": 1183
                },
                {
                  "player_name": "Olivier Thill",
                  "ranking": 1184
                },
                {
                  "player_name": "Fernando Calero",
                  "ranking": 1185
                },
                {
                  "player_name": "Diego Rubio",
                  "ranking": 1186
                },
                {
                  "player_name": "Ismaïla Sarr",
                  "ranking": 1187
                }
              ],
              "lower": [
                {
                  "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
                },
                {
                  "player_name": "Sukhrob Nurullaev",
                  "ranking": 1193
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 27,
          "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": 27,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0056,
            "fbref_prior_metrics": {
              "squad": "Tottenham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (D_service) evaluated 27 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Tottenham, rel: 0.00, 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.1165,
                "tackles": 1.1833,
                "tackles_won": 0.68,
                "clearances": 6.0929,
                "aerial_won": 2.5319,
                "total_shots": 0.7011,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 51.903,
                "accurate_pass": 44.2111,
                "duels_won": 4.8035,
                "total_long_balls": 6.0605,
                "accurate_long_balls": 2.2176,
                "total_own_half_passes": 33.4273,
                "accurate_own_half_passes": 30.891,
                "total_opp_half_passes": 18.4758,
                "accurate_opp_half_passes": 13.3202,
                "crosses_total": 0.2699,
                "crosses_accurate": 0.0,
                "touches": 70.0142,
                "possession_lost": 10.8495,
                "dispossessed": 0.0951,
                "duels_lost": 4.1011,
                "aerial_lost": 2.3938,
                "total_contest": 0.1462,
                "won_contest": 0.124,
                "ball_recovery": 2.6586,
                "challenges_lost": 0.3707,
                "fouls": 1.2193,
                "fouls_drawn": 0.87,
                "blocks": 0.7021,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0446,
                "expected_assists": 0.0281,
                "shots_on_target": 0.241,
                "big_chances_created": 0.05,
                "xgot": 0.0243,
                "ball_carries": 17.8463,
                "total_progression": 65.495,
                "progressive_carries": 0.7819,
                "key_pass": 0.5707,
                "shots_off_target": 0.4601
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1519,
                    "rating": 5.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1291,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1097,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0933,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-19",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0793,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-11",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0674,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0573,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0487,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0414,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Sunderland",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0352,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.7547,
                  "aerialWon": 2.7858,
                  "totalClearance_p90": 6.6528,
                  "totalTackle": 0.8191,
                  "totalPass": 48.6451
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.116467833518982,
                    "model_output": 1.1165,
                    "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.1125
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0781
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0294
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0281
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0274
                        }
                      ],
                      "others": -0.0163,
                      "total": 1.1165,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123257
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.077506
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.027694
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.025716
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.024491
                        }
                      ],
                      "others_margin": -0.014495
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.1833302974700928,
                    "model_output": 1.1833,
                    "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.1622
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0943
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0499
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0478
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.036
                        }
                      ],
                      "others": -0.1448,
                      "total": 1.1833,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.110079
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.062535
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.034766
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.034463
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.026745
                        }
                      ],
                      "others_margin": -0.115326
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6799737811088562,
                    "model_output": 0.68,
                    "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.0861
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0585
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0433
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0357
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0317
                        }
                      ],
                      "others": -0.0913,
                      "total": 0.68,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.096048
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.064226
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.050324
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.043552
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.040279
                        }
                      ],
                      "others_margin": -0.125955
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.0929274559021,
                    "model_output": 6.0929,
                    "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.8012
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5922
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.4107
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2794
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2629
                        }
                      ],
                      "others": 0.2951,
                      "total": 6.0929,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.208746
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.130367
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.081376
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.0518
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.046405
                        }
                      ],
                      "others_margin": 0.049652
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.5318856239318848,
                    "model_output": 2.5319,
                    "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.5691
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2323
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2097
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1632
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1325
                        }
                      ],
                      "others": -0.1569,
                      "total": 2.5319,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.344856
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.112502
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.091694
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.065983
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.050532
                        }
                      ],
                      "others_margin": -0.060155
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7010523676872253,
                    "model_output": 0.7011,
                    "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.1125
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0647
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0311
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0134
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0132
                        }
                      ],
                      "others": 0.0573,
                      "total": 0.7011,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.112475
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.064671
                        },
                        {
                          "name": "rating",
                          "margin": -0.031061
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.013356
                        },
                        {
                          "name": "history_matches",
                          "margin": 0.013204
                        }
                      ],
                      "others_margin": 0.057276
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8360676765441895,
                    "model_output": 6.8361,
                    "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.0292
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0252
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0219
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0143
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0131
                        }
                      ],
                      "others": -0.0023,
                      "total": 6.8361,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.029207
                        },
                        {
                          "name": "rating",
                          "margin": -0.025192
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.021929
                        },
                        {
                          "name": "error_severity",
                          "margin": 0.014275
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.013093
                        }
                      ],
                      "others_margin": -0.002375
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 27,
                  "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.0056, quality 0.625)",
              "stats": {
                "interceptions": 1.1227,
                "tackles": 1.19,
                "tackles_won": 0.6838,
                "clearances": 6.127,
                "aerial_won": 2.5461,
                "total_shots": 0.705,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 52.1937,
                "accurate_pass": 44.4587,
                "duels_won": 4.8304,
                "total_long_balls": 6.0944,
                "accurate_long_balls": 2.23,
                "total_own_half_passes": 33.6145,
                "accurate_own_half_passes": 31.064,
                "total_opp_half_passes": 18.5793,
                "accurate_opp_half_passes": 13.3948,
                "crosses_total": 0.2714,
                "crosses_accurate": 0.0,
                "touches": 70.4063,
                "possession_lost": 10.9103,
                "dispossessed": 0.0956,
                "duels_lost": 4.1241,
                "aerial_lost": 2.4072,
                "total_contest": 0.147,
                "won_contest": 0.1247,
                "ball_recovery": 2.6735,
                "challenges_lost": 0.3728,
                "fouls": 1.2261,
                "fouls_drawn": 0.8749,
                "blocks": 0.706,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0448,
                "expected_assists": 0.0283,
                "shots_on_target": 0.2423,
                "big_chances_created": 0.0503,
                "xgot": 0.0244,
                "ball_carries": 17.9462,
                "total_progression": 65.8618,
                "progressive_carries": 0.7863,
                "key_pass": 0.5739,
                "shots_off_target": 0.4627
              },
              "params": {
                "market_value_eur": 19400000,
                "quality_factor": 0.6251,
                "boost_factor": 1.0056,
                "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": {
                "interceptions": 1.1227,
                "tackles": 1.19,
                "tackles_won": 0.6838,
                "clearances": 6.127,
                "aerial_won": 2.5461,
                "total_shots": 0.705,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 52.1937,
                "accurate_pass": 44.4587,
                "duels_won": 4.8304,
                "total_long_balls": 6.0944,
                "accurate_long_balls": 2.23,
                "total_own_half_passes": 33.6145,
                "accurate_own_half_passes": 31.064,
                "total_opp_half_passes": 18.5793,
                "accurate_opp_half_passes": 13.3948,
                "crosses_total": 0.2714,
                "crosses_accurate": 0.0,
                "touches": 70.4063,
                "possession_lost": 10.9103,
                "dispossessed": 0.0956,
                "duels_lost": 4.1241,
                "aerial_lost": 2.4072,
                "total_contest": 0.147,
                "won_contest": 0.1247,
                "ball_recovery": 2.6735,
                "challenges_lost": 0.3728,
                "fouls": 1.2261,
                "fouls_drawn": 0.8749,
                "blocks": 0.706,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0448,
                "expected_assists": 0.0283,
                "shots_on_target": 0.2423,
                "big_chances_created": 0.0503,
                "xgot": 0.0244,
                "ball_carries": 17.9462,
                "total_progression": 65.8618,
                "progressive_carries": 0.7863,
                "key_pass": 0.5739,
                "shots_off_target": 0.4627
              },
              "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.1227,
                "tackles": 1.19,
                "tackles_won": 0.6838,
                "clearances": 6.127,
                "aerial_won": 2.5461,
                "total_shots": 0.705,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 52.1937,
                "accurate_pass": 44.4587,
                "duels_won": 4.8304,
                "total_long_balls": 6.0944,
                "accurate_long_balls": 2.23,
                "total_own_half_passes": 33.6145,
                "accurate_own_half_passes": 31.064,
                "total_opp_half_passes": 18.5793,
                "accurate_opp_half_passes": 13.3948,
                "crosses_total": 0.2714,
                "crosses_accurate": 0.0,
                "touches": 70.4063,
                "possession_lost": 10.9103,
                "dispossessed": 0.0956,
                "duels_lost": 4.1241,
                "aerial_lost": 2.4072,
                "total_contest": 0.147,
                "won_contest": 0.1247,
                "ball_recovery": 2.6735,
                "challenges_lost": 0.3728,
                "fouls": 1.2261,
                "fouls_drawn": 0.8749,
                "blocks": 0.706,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0448,
                "expected_assists": 0.0283,
                "shots_on_target": 0.2423,
                "big_chances_created": 0.0503,
                "xgot": 0.0244,
                "ball_carries": 17.9462,
                "total_progression": 65.8618,
                "progressive_carries": 0.7863,
                "key_pass": 0.5739,
                "shots_off_target": 0.4627,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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": "Charalampos Kostoulas",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "interceptions": 1.1227,
                "tackles": 1.19,
                "tackles_won": 0.6838,
                "clearances": 6.127,
                "aerial_won": 2.5461,
                "total_shots": 0.705,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 52.1937,
                "accurate_pass": 44.4587,
                "duels_won": 4.8304,
                "total_long_balls": 6.0944,
                "accurate_long_balls": 2.23,
                "total_own_half_passes": 33.6145,
                "accurate_own_half_passes": 31.064,
                "total_opp_half_passes": 18.5793,
                "accurate_opp_half_passes": 13.3948,
                "crosses_total": 0.2714,
                "crosses_accurate": 0.0,
                "touches": 70.4063,
                "possession_lost": 10.9103,
                "dispossessed": 0.0956,
                "duels_lost": 4.1241,
                "aerial_lost": 2.4072,
                "total_contest": 0.147,
                "won_contest": 0.1247,
                "ball_recovery": 2.6735,
                "challenges_lost": 0.3728,
                "fouls": 1.2261,
                "fouls_drawn": 0.8749,
                "blocks": 0.706,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0498,
                "expected_assists": 0.0314,
                "shots_on_target": 0.2423,
                "big_chances_created": 0.0503,
                "xgot": 0.0271,
                "ball_carries": 17.9462,
                "total_progression": 65.8618,
                "progressive_carries": 0.7863,
                "key_pass": 0.5739,
                "shots_off_target": 0.4627,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 5 by projected rating, fifa_overall 79.0; not used by the projection)",
              "stats": {
                "interceptions": 1.1227,
                "tackles": 1.19,
                "tackles_won": 0.6838,
                "clearances": 6.127,
                "aerial_won": 2.5461,
                "total_shots": 0.705,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 52.1937,
                "accurate_pass": 44.4587,
                "duels_won": 4.8304,
                "total_long_balls": 6.0944,
                "accurate_long_balls": 2.23,
                "total_own_half_passes": 33.6145,
                "accurate_own_half_passes": 31.064,
                "total_opp_half_passes": 18.5793,
                "accurate_opp_half_passes": 13.3948,
                "crosses_total": 0.2714,
                "crosses_accurate": 0.0,
                "touches": 70.4063,
                "possession_lost": 10.9103,
                "dispossessed": 0.0956,
                "duels_lost": 4.1241,
                "aerial_lost": 2.4072,
                "total_contest": 0.147,
                "won_contest": 0.1247,
                "ball_recovery": 2.6735,
                "challenges_lost": 0.3728,
                "fouls": 1.2261,
                "fouls_drawn": 0.8749,
                "blocks": 0.706,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0498,
                "expected_assists": 0.0314,
                "shots_on_target": 0.2423,
                "big_chances_created": 0.0503,
                "xgot": 0.0271,
                "ball_carries": 17.9462,
                "total_progression": 65.8618,
                "progressive_carries": 0.7863,
                "key_pass": 0.5739,
                "shots_off_target": 0.4627,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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": 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": 1188,
                "fifa_rank": 867.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": {
                "interceptions": 1.1227,
                "tackles": 1.19,
                "tackles_won": 0.6838,
                "clearances": 6.127,
                "aerial_won": 2.5461,
                "total_shots": 0.705,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 52.1937,
                "accurate_pass": 44.4587,
                "duels_won": 4.8304,
                "total_long_balls": 6.0944,
                "accurate_long_balls": 2.23,
                "total_own_half_passes": 33.6145,
                "accurate_own_half_passes": 31.064,
                "total_opp_half_passes": 18.5793,
                "accurate_opp_half_passes": 13.3948,
                "crosses_total": 0.2714,
                "crosses_accurate": 0.0,
                "touches": 70.4063,
                "possession_lost": 10.9103,
                "dispossessed": 0.0956,
                "duels_lost": 4.1241,
                "aerial_lost": 2.4072,
                "total_contest": 0.147,
                "won_contest": 0.1247,
                "ball_recovery": 2.6735,
                "challenges_lost": 0.3728,
                "fouls": 1.2261,
                "fouls_drawn": 0.8749,
                "blocks": 0.706,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0498,
                "expected_assists": 0.0314,
                "shots_on_target": 0.2423,
                "big_chances_created": 0.0503,
                "xgot": 0.0271,
                "ball_carries": 17.9462,
                "total_progression": 65.8618,
                "progressive_carries": 0.7863,
                "key_pass": 0.5739,
                "shots_off_target": 0.4627,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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.0486,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0486,
                "scorer_weight": 0.0398,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0313,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.1227,
                "tackles": 1.19,
                "tackles_won": 0.6838,
                "clearances": 6.127,
                "aerial_won": 2.5461,
                "total_shots": 0.705,
                "rating": 6.8361,
                "minutes": 89.02,
                "total_pass": 52.1937,
                "accurate_pass": 44.4587,
                "duels_won": 4.8304,
                "total_long_balls": 6.0944,
                "accurate_long_balls": 2.23,
                "total_own_half_passes": 33.6145,
                "accurate_own_half_passes": 31.064,
                "total_opp_half_passes": 18.5793,
                "accurate_opp_half_passes": 13.3948,
                "crosses_total": 0.2714,
                "crosses_accurate": 0.0,
                "touches": 70.4063,
                "possession_lost": 10.9103,
                "dispossessed": 0.0956,
                "duels_lost": 4.1241,
                "aerial_lost": 2.4072,
                "total_contest": 0.147,
                "won_contest": 0.1247,
                "ball_recovery": 2.6735,
                "challenges_lost": 0.3728,
                "fouls": 1.2261,
                "fouls_drawn": 0.8749,
                "blocks": 0.706,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0498,
                "expected_assists": 0.0314,
                "shots_on_target": 0.2423,
                "big_chances_created": 0.0503,
                "xgot": 0.0271,
                "ball_carries": 17.9462,
                "total_progression": 65.8618,
                "progressive_carries": 0.7863,
                "key_pass": 0.5739,
                "shots_off_target": 0.4627,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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.0486,
                "projected_assists": 0,
                "assist_probability": 0.0309,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0309,
                "provider_weight": 0.0251,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0248,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Omar Alderete": {
          "player_id": 805137,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 15,
          "height": 187,
          "market_value": 13800000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 3,
            "total_shots": 0,
            "rating": 6.7536,
            "minutes": 78,
            "total_pass": 36,
            "accurate_pass": 28,
            "duels_won": 4,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 8,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 49,
            "possession_lost": 9.5442,
            "dispossessed": 0.1136,
            "duels_lost": 4,
            "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.0022,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0404,
            "expected_assists": 0.015,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0371,
            "ball_carries": 15,
            "total_progression": 67,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 2.0,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.63,
            "opponent_faced": "Pascal Groß",
            "pressing_zone": "Left Wing vs Right Back — Flank Battle",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0396,
            "projected_assists": 0,
            "assist_probability": 0.0149,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 23,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0078,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 34,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 23,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "clearances": 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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0168,
                "expected_assists": 0.0239,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 46,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 5,
                "aerial_won": 6,
                "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 22,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 9,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 5.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2296,
                "expected_assists": 0.0103,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 38,
                "accurate_pass": 26,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 4,
                "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": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 63,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 25,
                "tackles": 1,
                "clearances": 4,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025026,
              "match_date": "2026-04-12",
              "home_team": "Sunderland",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0035,
                "total_shots": 0,
                "total_pass": 61,
                "accurate_pass": 48,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 7,
                "duels_won": 4,
                "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": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0191,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 9,
                "aerial_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1395,
                "expected_assists": 0.0285,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 54,
                "accurate_pass": 41,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 5,
                "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": 14023982,
              "match_date": "2026-03-03",
              "home_team": "Leeds United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 21,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 17,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1212,
            "combined_rank_score": 530.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 552.0,
            "sofascore_rating": 6.8182,
            "sofascore_appearances": 33.0,
            "fifa_rank": 509.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.7536,
            "source_file": "data/player_rankings.csv",
            "player_name": "Omar Alderete",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carlos Miguel",
                  "ranking": 1207
                },
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Daichi Kamada",
                  "ranking": 1213
                },
                {
                  "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
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.753,
          "history_matches": 34,
          "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": 34,
            "data_confidence": 0.753,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0023,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 24.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.02
            },
            "rationale": "XGBoost regressor (D_service) evaluated 34 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, rel: 0.02, 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.948,
                "tackles": 1.1412,
                "tackles_won": 0.6177,
                "clearances": 5.2384,
                "aerial_won": 2.8023,
                "total_shots": 0.4716,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.5946,
                "accurate_pass": 27.5488,
                "duels_won": 4.4328,
                "total_long_balls": 4.6988,
                "accurate_long_balls": 1.8546,
                "total_own_half_passes": 21.425,
                "accurate_own_half_passes": 19.0821,
                "total_opp_half_passes": 14.1697,
                "accurate_opp_half_passes": 8.4668,
                "crosses_total": 0.2395,
                "crosses_accurate": 0.0797,
                "touches": 48.7081,
                "possession_lost": 9.5223,
                "dispossessed": 0.1133,
                "duels_lost": 3.6734,
                "aerial_lost": 2.0941,
                "total_contest": 0.3805,
                "won_contest": 0.3368,
                "ball_recovery": 2.8143,
                "challenges_lost": 0.1229,
                "fouls": 1.2994,
                "fouls_drawn": 0.3906,
                "blocks": 0.7072,
                "goals": 0.0022,
                "goal_rate": 0.0022,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0363,
                "expected_assists": 0.0135,
                "shots_on_target": 0.2117,
                "big_chances_created": 0.0162,
                "xgot": 0.0333,
                "ball_carries": 14.6692,
                "total_progression": 66.4565,
                "progressive_carries": 0.8387,
                "key_pass": 0.1686,
                "shots_off_target": 0.2599
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 23.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 5.2
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-03-03",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.0207,
                  "aerialWon": 2.5711,
                  "totalClearance_p90": 5.5359,
                  "totalTackle": 0.7516,
                  "totalPass": 35.7917
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.948043704032898,
                    "model_output": 0.948,
                    "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.1121
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0311
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0212
                        },
                        {
                          "name": "error_severity",
                          "contribution": -0.0201
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0178
                        }
                      ],
                      "others": -0.0092,
                      "total": 0.948,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122908
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.032605
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.022299
                        },
                        {
                          "name": "error_severity",
                          "margin": -0.021204
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.018792
                        }
                      ],
                      "others_margin": -0.009545
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.141225814819336,
                    "model_output": 1.1412,
                    "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.1649
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1434
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0714
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0667
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0461
                        }
                      ],
                      "others": -0.09,
                      "total": 1.1412,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.111814
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.096473
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.051784
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.050924
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.036768
                        }
                      ],
                      "others_margin": -0.075851
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6176742911338806,
                    "model_output": 0.6177,
                    "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": "totalTackle_p90",
                          "contribution": -0.09
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0831
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0574
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0443
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0357
                        }
                      ],
                      "others": -0.0924,
                      "total": 0.6177,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.111364
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.103249
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.070095
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.057637
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.049055
                        }
                      ],
                      "others_margin": -0.139479
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.238381862640381,
                    "model_output": 5.2384,
                    "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.5313
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5222
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2329
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2063
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1462
                        }
                      ],
                      "others": 0.1481,
                      "total": 5.2384,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.143179
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.123194
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.050415
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.042612
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.029136
                        }
                      ],
                      "others_margin": 0.028693
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.8022801876068115,
                    "model_output": 2.8023,
                    "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.5518
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2206
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1843
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1775
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1164
                        }
                      ],
                      "others": 0.1697,
                      "total": 2.8023,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.335925
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.108049
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.082067
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.073172
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.045237
                        }
                      ],
                      "others_margin": 0.062431
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.47160834074020386,
                    "model_output": 0.4716,
                    "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.0579
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0504
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0143
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0134
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0108
                        }
                      ],
                      "others": -0.0239,
                      "total": 0.4716,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.057901
                        },
                        {
                          "name": "rating",
                          "margin": -0.050354
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.014265
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.013374
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.010845
                        }
                      ],
                      "others_margin": -0.023864
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7535834312438965,
                    "model_output": 6.7536,
                    "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.0283
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0137
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0113
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0109
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0106
                        }
                      ],
                      "others": -0.0067,
                      "total": 6.7536,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.028339
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.013684
                        },
                        {
                          "name": "error_severity",
                          "margin": 0.011311
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.010925
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010605
                        }
                      ],
                      "others_margin": -0.006674
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 34,
                  "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.0023, quality 0.566)",
              "stats": {
                "interceptions": 0.9502,
                "tackles": 1.1439,
                "tackles_won": 0.6191,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4727,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2401,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3024,
                "fouls_drawn": 0.3915,
                "blocks": 0.7088,
                "goals": 0.0022,
                "goal_rate": 0.0022,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0364,
                "expected_assists": 0.0135,
                "shots_on_target": 0.2122,
                "big_chances_created": 0.0162,
                "xgot": 0.0334,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605
              },
              "params": {
                "market_value_eur": 13800000,
                "quality_factor": 0.566,
                "boost_factor": 1.0023,
                "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.0017)",
              "stats": {
                "interceptions": 0.9486,
                "tackles": 1.1439,
                "tackles_won": 0.6181,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4719,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2397,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3002,
                "fouls_drawn": 0.3908,
                "blocks": 0.7088,
                "goals": 0.0022,
                "goal_rate": 0.0022,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0364,
                "expected_assists": 0.0135,
                "shots_on_target": 0.2118,
                "big_chances_created": 0.0162,
                "xgot": 0.0334,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605
              },
              "params": {
                "blend_weight": 0.0017,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8679,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Sunderland"
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9486,
                "tackles": 1.1439,
                "tackles_won": 0.6181,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4723,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2397,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3002,
                "fouls_drawn": 0.3908,
                "blocks": 0.7088,
                "goals": 0.0022,
                "goal_rate": 0.0022,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0364,
                "expected_assists": 0.0135,
                "shots_on_target": 0.2118,
                "big_chances_created": 0.0162,
                "xgot": 0.0334,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605
              },
              "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.9486,
                "tackles": 1.1439,
                "tackles_won": 0.6181,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4723,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2397,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3002,
                "fouls_drawn": 0.3908,
                "blocks": 0.7088,
                "goals": 0.0022,
                "goal_rate": 0.0022,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0364,
                "expected_assists": 0.0135,
                "shots_on_target": 0.2118,
                "big_chances_created": 0.0162,
                "xgot": 0.0334,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.63,
                "opponent_faced": "Pascal Groß",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Pascal Groß",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "interceptions": 0.9486,
                "tackles": 1.1439,
                "tackles_won": 0.6181,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4723,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2397,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3002,
                "fouls_drawn": 0.3908,
                "blocks": 0.7088,
                "goal_rate": 0.0022,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0404,
                "expected_assists": 0.015,
                "shots_on_target": 0.2118,
                "big_chances_created": 0.0162,
                "xgot": 0.0371,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.63,
                "opponent_faced": "Pascal Groß",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank 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.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 10 by projected rating, fifa_overall 81.0; not used by the projection)",
              "stats": {
                "interceptions": 0.9486,
                "tackles": 1.1439,
                "tackles_won": 0.6181,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4723,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2397,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3002,
                "fouls_drawn": 0.3908,
                "blocks": 0.7088,
                "goal_rate": 0.0022,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0404,
                "expected_assists": 0.015,
                "shots_on_target": 0.2118,
                "big_chances_created": 0.0162,
                "xgot": 0.0371,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.63,
                "opponent_faced": "Pascal Groß",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank 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": 1212,
                "fifa_rank": 509.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": {
                "interceptions": 0.9486,
                "tackles": 1.1439,
                "tackles_won": 0.6181,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4723,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2397,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3002,
                "fouls_drawn": 0.3908,
                "blocks": 0.7088,
                "goal_rate": 0.0022,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0404,
                "expected_assists": 0.015,
                "shots_on_target": 0.2118,
                "big_chances_created": 0.0162,
                "xgot": 0.0371,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.63,
                "opponent_faced": "Pascal Groß",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0396,
                "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": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0396,
                "scorer_weight": 0.0323,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0254,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.9486,
                "tackles": 1.1439,
                "tackles_won": 0.6181,
                "clearances": 5.2504,
                "aerial_won": 2.8087,
                "total_shots": 0.4723,
                "rating": 6.7536,
                "minutes": 78.11,
                "total_pass": 35.6765,
                "accurate_pass": 27.6122,
                "duels_won": 4.443,
                "total_long_balls": 4.7096,
                "accurate_long_balls": 1.8589,
                "total_own_half_passes": 21.4743,
                "accurate_own_half_passes": 19.126,
                "total_opp_half_passes": 14.2023,
                "accurate_opp_half_passes": 8.4863,
                "crosses_total": 0.2397,
                "crosses_accurate": 0.0799,
                "touches": 48.8201,
                "possession_lost": 9.5442,
                "dispossessed": 0.1136,
                "duels_lost": 3.6818,
                "aerial_lost": 2.0989,
                "total_contest": 0.3814,
                "won_contest": 0.3376,
                "ball_recovery": 2.8208,
                "challenges_lost": 0.1232,
                "fouls": 1.3002,
                "fouls_drawn": 0.3908,
                "blocks": 0.7088,
                "goal_rate": 0.0022,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0404,
                "expected_assists": 0.015,
                "shots_on_target": 0.2118,
                "big_chances_created": 0.0162,
                "xgot": 0.0371,
                "ball_carries": 14.7029,
                "total_progression": 66.6093,
                "progressive_carries": 0.8406,
                "key_pass": 0.169,
                "shots_off_target": 0.2605,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.63,
                "opponent_faced": "Pascal Groß",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0396,
                "projected_assists": 0,
                "assist_probability": 0.0149,
                "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.0149,
                "provider_weight": 0.012,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0119,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 14,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Reinildo Mandava": {
          "player_id": 831424,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 17,
          "height": 180,
          "market_value": 4099999,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.6677,
            "minutes": 87,
            "total_pass": 35,
            "accurate_pass": 30,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 16,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 14,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 55,
            "possession_lost": 8.5238,
            "dispossessed": 0.3961,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0212,
            "assists": 0,
            "expected_goals": 0.0023,
            "expected_assists": 0.0499,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 8,
            "total_progression": 20,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Charalampos Kostoulas",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0023,
            "projected_assists": 0,
            "assist_probability": 0.0487,
            "finishing_factor": 0.9597,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0068,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 20,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 2,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0102,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 31,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0141,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 32,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 3,
                "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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2893,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 8,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0158,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 43,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 3,
                "duels_won": 6,
                "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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 32,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 6,
                "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 72,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0031,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 28,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0896,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 24,
                "interceptions": 2,
                "clearances": 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": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 63,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0076,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 2,
                "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": 988,
            "combined_rank_score": 607.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 2.0,
            "fifa_rank": 770.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6677,
            "source_file": "data/player_rankings.csv",
            "player_name": "Reinildo Mandava",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jahmali Waite",
                  "ranking": 983
                },
                {
                  "player_name": "Guillermo Viscarra",
                  "ranking": 984
                },
                {
                  "player_name": "Alexis Sánchez",
                  "ranking": 985
                },
                {
                  "player_name": "Jin-uk Jeong",
                  "ranking": 986
                },
                {
                  "player_name": "Cho Young-kwang",
                  "ranking": 987
                }
              ],
              "lower": [
                {
                  "player_name": "João Marcelo",
                  "ranking": 989
                },
                {
                  "player_name": "Saúl Ñíguez",
                  "ranking": 990
                },
                {
                  "player_name": "Abduvokhid Gulomov",
                  "ranking": 991
                },
                {
                  "player_name": "Danila Forov",
                  "ranking": 992
                },
                {
                  "player_name": "Bradley Lyons",
                  "ranking": 993
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 29,
          "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": 29,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9976,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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 29 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, 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.184,
                "tackles": 1.9625,
                "tackles_won": 1.316,
                "clearances": 3.2348,
                "aerial_won": 1.5009,
                "total_shots": 0.3939,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 35.0384,
                "accurate_pass": 30.292,
                "duels_won": 5.2067,
                "total_long_balls": 2.3039,
                "accurate_long_balls": 1.1942,
                "total_own_half_passes": 17.7259,
                "accurate_own_half_passes": 15.7722,
                "total_opp_half_passes": 17.3125,
                "accurate_opp_half_passes": 14.5198,
                "crosses_total": 0.7041,
                "crosses_accurate": 0.1828,
                "touches": 55.2445,
                "possession_lost": 8.5443,
                "dispossessed": 0.3971,
                "duels_lost": 4.0791,
                "aerial_lost": 0.8257,
                "total_contest": 0.7526,
                "won_contest": 0.5174,
                "ball_recovery": 4.1736,
                "challenges_lost": 1.1184,
                "fouls": 1.5449,
                "fouls_drawn": 1.1294,
                "blocks": 0.4186,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0216,
                "assist_rate": 0.0216,
                "expected_goals": 0.0021,
                "expected_assists": 0.045,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0769,
                "total_progression": 20.3492,
                "progressive_carries": 0.5402,
                "key_pass": 0.3654,
                "shots_off_target": 0.3939
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1514,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1287,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1094,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.093,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.079,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0672,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0571,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0485,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0412,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 5.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.0632,
                  "aerialWon": 1.6589,
                  "totalClearance_p90": 5.4019,
                  "totalTackle": 1.7311,
                  "totalPass": 34.078
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1840364933013916,
                    "model_output": 1.184,
                    "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.1141
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0823
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0315
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.025
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0242
                        }
                      ],
                      "others": 0.0496,
                      "total": 1.184,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124977
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.081364
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.029454
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.022774
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.021581
                        }
                      ],
                      "others_margin": 0.042779
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.9625452756881714,
                    "model_output": 1.9625,
                    "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.1969
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0853
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0709
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0727
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0451
                        }
                      ],
                      "others": 0.0977,
                      "total": 1.9625,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.132156
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.052237
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.041448
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.04078
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.024455
                        }
                      ],
                      "others_margin": 0.051079
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.3160479068756104,
                    "model_output": 1.316,
                    "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.123
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0823
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0834
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.07
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0412
                        }
                      ],
                      "others": 0.0617,
                      "total": 1.316,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.134471
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.080853
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.075797
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.059463
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.033374
                        }
                      ],
                      "others_margin": 0.048088
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.234802484512329,
                    "model_output": 3.2348,
                    "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.4706
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3863
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2576
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1942
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0995
                        }
                      ],
                      "others": -0.138,
                      "total": 3.2348,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127828
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.103698
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.075657
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.057545
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.029067
                        }
                      ],
                      "others_margin": -0.041766
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.5009409189224243,
                    "model_output": 1.5009,
                    "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.1935
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1826
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0882
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0817
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0721
                        }
                      ],
                      "others": -0.1594,
                      "total": 1.5009,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.131069
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.109646
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.051478
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.050175
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.044392
                        }
                      ],
                      "others_margin": -0.100915
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.39387187361717224,
                    "model_output": 0.3939,
                    "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.112
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0547
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0148
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0104
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0091
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.3939,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.112032
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.054656
                        },
                        {
                          "name": "rating",
                          "margin": -0.014809
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.010357
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.009099
                        }
                      ],
                      "others_margin": -0.006332
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.667736053466797,
                    "model_output": 6.6677,
                    "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.0297
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0178
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0143
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0131
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0335,
                      "total": 6.6677,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.029733
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.017801
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.014341
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013078
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.009029
                        }
                      ],
                      "others_margin": -0.033416
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 29,
                  "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 0.9976, quality 0.451)",
              "stats": {
                "interceptions": 1.1812,
                "tackles": 1.9578,
                "tackles_won": 1.3129,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.393,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.7024,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5412,
                "fouls_drawn": 1.1267,
                "blocks": 0.4176,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0215,
                "assist_rate": 0.0215,
                "expected_goals": 0.0021,
                "expected_assists": 0.0449,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393
              },
              "params": {
                "market_value_eur": 4099999,
                "quality_factor": 0.4511,
                "boost_factor": 0.9976,
                "reference_quality": 0.505,
                "history_matches": 29,
                "history_shrink": 0.1471,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0127)",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.9578,
                "tackles_won": 1.3085,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.388,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.712,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5524,
                "fouls_drawn": 1.1247,
                "blocks": 0.4176,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0212,
                "assist_rate": 0.0212,
                "expected_goals": 0.0021,
                "expected_assists": 0.0449,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393
              },
              "params": {
                "blend_weight": 0.0127,
                "history_matches": 29,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9683,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.5412,
                  "after": 1.5524
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1812,
                  "after": 1.1908
                },
                {
                  "stat": "totalCross",
                  "before": 0.7024,
                  "after": 0.712
                },
                {
                  "stat": "totalShots",
                  "before": 0.393,
                  "after": 0.388
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.9578,
                "tackles_won": 1.3085,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.393,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.712,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5524,
                "fouls_drawn": 1.1247,
                "blocks": 0.4176,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0212,
                "assist_rate": 0.0212,
                "expected_goals": 0.0021,
                "expected_assists": 0.0449,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393
              },
              "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.1908,
                "tackles": 1.9578,
                "tackles_won": 1.3085,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.393,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.712,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5524,
                "fouls_drawn": 1.1247,
                "blocks": 0.4176,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0212,
                "assist_rate": 0.0212,
                "expected_goals": 0.0021,
                "expected_assists": 0.0449,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393,
                "opponent_faced": "Charalampos Kostoulas",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Charalampos Kostoulas",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.9578,
                "tackles_won": 1.3085,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.393,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.712,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5524,
                "fouls_drawn": 1.1247,
                "blocks": 0.4176,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0212,
                "assists": 0,
                "expected_goals": 0.0023,
                "expected_assists": 0.0499,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393,
                "opponent_faced": "Charalampos Kostoulas",
                "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.9597,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 17 by projected rating, fifa_overall 80.0; not used by the projection)",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.9578,
                "tackles_won": 1.3085,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.393,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.712,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5524,
                "fouls_drawn": 1.1247,
                "blocks": 0.4176,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0212,
                "assists": 0,
                "expected_goals": 0.0023,
                "expected_assists": 0.0499,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393,
                "opponent_faced": "Charalampos Kostoulas",
                "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.9597,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 988,
                "fifa_rank": 770.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.1908,
                "tackles": 1.9578,
                "tackles_won": 1.3085,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.393,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.712,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5524,
                "fouls_drawn": 1.1247,
                "blocks": 0.4176,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0212,
                "assists": 0,
                "expected_goals": 0.0023,
                "expected_assists": 0.0499,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393,
                "opponent_faced": "Charalampos Kostoulas",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0023,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9597,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0023,
                "scorer_weight": 0.0022,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0017,
                "finishing_factor": 0.9597,
                "appearance_weight": 1.0,
                "weight_rank": 14,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.1908,
                "tackles": 1.9578,
                "tackles_won": 1.3085,
                "clearances": 3.227,
                "aerial_won": 1.4973,
                "total_shots": 0.393,
                "rating": 6.6677,
                "minutes": 87.15,
                "total_pass": 34.9543,
                "accurate_pass": 30.2193,
                "duels_won": 5.1942,
                "total_long_balls": 2.2984,
                "accurate_long_balls": 1.1913,
                "total_own_half_passes": 17.6834,
                "accurate_own_half_passes": 15.7343,
                "total_opp_half_passes": 17.2709,
                "accurate_opp_half_passes": 14.485,
                "crosses_total": 0.712,
                "crosses_accurate": 0.1824,
                "touches": 55.1119,
                "possession_lost": 8.5238,
                "dispossessed": 0.3961,
                "duels_lost": 4.0693,
                "aerial_lost": 0.8237,
                "total_contest": 0.7508,
                "won_contest": 0.5162,
                "ball_recovery": 4.1636,
                "challenges_lost": 1.1157,
                "fouls": 1.5524,
                "fouls_drawn": 1.1247,
                "blocks": 0.4176,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0212,
                "assists": 0,
                "expected_goals": 0.0023,
                "expected_assists": 0.0499,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.0575,
                "total_progression": 20.3004,
                "progressive_carries": 0.5389,
                "key_pass": 0.3645,
                "shots_off_target": 0.393,
                "opponent_faced": "Charalampos Kostoulas",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0023,
                "projected_assists": 0,
                "assist_probability": 0.0487,
                "finishing_factor": 0.9597,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0487,
                "provider_weight": 0.0399,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0395,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Wilson Isidor": {
          "player_id": 877980,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 18,
          "height": 184,
          "market_value": 18500000,
          "stats": {
            "expected_goals": 0.2663,
            "goal_rate": 0.2287,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0399,
            "key_pass": 1,
            "rating": 6.6982,
            "minutes": 70,
            "total_pass": 7,
            "accurate_pass": 4,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 4.9718,
            "dispossessed": 0.528,
            "duels_lost": 5,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2012,
            "offsides": 1,
            "ball_carries": 2,
            "total_progression": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8472,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
            "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.2338,
            "projected_assists": 0,
            "assist_probability": 0.0391,
            "finishing_factor": 0.9617,
            "creation_factor": 0.8,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 22,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 20,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 26,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1034,
                "expected_assists": 0.0067,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 3,
                "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"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 26,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.3851,
                "expected_assists": 0.0001,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 1,
                "accurate_pass": 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"
            },
            {
              "match_id": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 23,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 4,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 29,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0854,
                "expected_assists": 0.0082,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 13,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1879,
                "expected_assists": 0.1691,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 3,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 18,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0163,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 4,
                "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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 25,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0368,
                "expected_assists": 0.0056,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "aerial_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 14,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6544,
                "expected_assists": 0.0,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 1,
                "accurate_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"
            }
          ],
          "ranking": {
            "global_player_rank": 3432,
            "combined_rank_score": 1424.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2208.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6982,
            "source_file": "data/player_rankings.csv",
            "player_name": "Wilson Isidor",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Aaron Hickey",
                  "ranking": 3427
                },
                {
                  "player_name": "Joaquin Seys",
                  "ranking": 3428
                },
                {
                  "player_name": "Julián Araujo",
                  "ranking": 3429
                },
                {
                  "player_name": "Emil Forsberg",
                  "ranking": 3430
                },
                {
                  "player_name": "Charlie Hughes",
                  "ranking": 3431
                }
              ],
              "lower": [
                {
                  "player_name": "Carlos Rodríguez",
                  "ranking": 3433
                },
                {
                  "player_name": "Ryan Manning",
                  "ranking": 3434
                },
                {
                  "player_name": "Sebastiaan Bornauw",
                  "ranking": 3435
                },
                {
                  "player_name": "Lorenzo Melgarejo",
                  "ranking": 3436
                },
                {
                  "player_name": "Tomáš Chorý",
                  "ranking": 3437
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.756,
          "history_matches": 37,
          "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": 37,
            "data_confidence": 0.756,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.004,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "minutes": 50.0,
              "goals_per90": 1.6666666666666667,
              "assists_per90": 0.0,
              "shots_per90": 5.4,
              "shots_on_target_pct": 33.3,
              "prior_reliability": 0.04
            },
            "rationale": "XGBoost regressor (F_service) evaluated 37 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, rel: 0.04, gls/90: 1.6666666666666667, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2819,
                "goals": 0.2658,
                "goal_rate": 0.2658,
                "shots_on_target": 0.7584,
                "total_shots": 1.6412,
                "expected_assists": 0.0358,
                "key_pass": 0.5232,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0374,
                "accurate_pass": 4.154,
                "duels_won": 2.2703,
                "total_long_balls": 0.3055,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1585,
                "accurate_opp_half_passes": 2.6449,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.1807,
                "possession_lost": 4.952,
                "dispossessed": 0.5259,
                "duels_lost": 5.4137,
                "aerial_lost": 3.308,
                "total_contest": 0.8092,
                "won_contest": 0.2426,
                "ball_recovery": 1.2386,
                "challenges_lost": 0.3707,
                "fouls": 0.8832,
                "fouls_drawn": 0.3002,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3253,
                "tackles": 0.3253,
                "clearances": 0.9734,
                "blocks": 0.0355,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1801,
                "xgot": 0.2129,
                "offsides": 0.8847,
                "ball_carries": 2.1622,
                "total_progression": 0.0,
                "shots_off_target": 0.8828
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.1278,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1086,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0785,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 7.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.1923,
                  "totalOppositionHalfPasses": 2.9624,
                  "accurateOppositionHalfPasses": 1.807,
                  "accuratePass": 2.2057,
                  "totalShots": 0.9084
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.28185412287712097,
                    "model_output": 0.2819,
                    "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.0661
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0103
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0088
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0081
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0078
                        }
                      ],
                      "others": -0.0006,
                      "total": 0.2819,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.287019
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.037974
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.03233
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.029764
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.027877
                        }
                      ],
                      "others_margin": -0.001992
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2657627463340759,
                    "model_output": 0.2658,
                    "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.064
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0227
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0201
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0115
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.01
                        }
                      ],
                      "others": 0.017,
                      "total": 0.2658,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.273205
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.081408
                        },
                        {
                          "name": "goals",
                          "margin": -0.071868
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.043554
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.039448
                        }
                      ],
                      "others_margin": 0.06597
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7584342360496521,
                    "model_output": 0.7584,
                    "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.1814
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0403
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0407
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0385
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0232
                        }
                      ],
                      "others": 0.0207,
                      "total": 0.7584,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.291022
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.054573
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.052312
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.049337
                        },
                        {
                          "name": "goals",
                          "margin": -0.030908
                        }
                      ],
                      "others_margin": 0.027633
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.6412453651428223,
                    "model_output": 1.6412,
                    "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.4404
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1817
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0347
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0332
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0298
                        }
                      ],
                      "others": -0.0343,
                      "total": 1.6412,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.440359
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.181656
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.034705
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.03315
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.02981
                        }
                      ],
                      "others_margin": -0.03421
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03576047345995903,
                    "model_output": 0.0358,
                    "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.0137
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0081
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0064
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0051
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0045
                        }
                      ],
                      "others": -0.0181,
                      "total": 0.0358,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.193242
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.110245
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.096212
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.083499
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.080118
                        }
                      ],
                      "others_margin": -0.409624
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5232327580451965,
                    "model_output": 0.5232,
                    "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.2303
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0754
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0552
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0425
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0391
                        }
                      ],
                      "others": -0.1689,
                      "total": 0.5232,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.29398
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.08705
                        },
                        {
                          "name": "touches",
                          "margin": -0.0689
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.056444
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.054898
                        }
                      ],
                      "others_margin": -0.279858
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6982221603393555,
                    "model_output": 6.6982,
                    "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.0502
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0232
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0198
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0163
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0123
                        }
                      ],
                      "others": -0.0426,
                      "total": 6.6982,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.050187
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.023234
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.019798
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016323
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.01232
                        }
                      ],
                      "others_margin": -0.042451
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 37,
                  "role_matches": 11,
                  "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.0040, quality 0.616)",
              "stats": {
                "expected_goals": 0.283,
                "goals": 0.2668,
                "goal_rate": 0.2668,
                "shots_on_target": 0.7615,
                "total_shots": 1.6478,
                "expected_assists": 0.0359,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.8867,
                "fouls_drawn": 0.3014,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3266,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1808,
                "xgot": 0.2138,
                "offsides": 0.8882,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.8863
              },
              "params": {
                "market_value_eur": 18500000,
                "quality_factor": 0.6161,
                "boost_factor": 1.004,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0031)",
              "stats": {
                "expected_goals": 0.283,
                "goals": 0.27,
                "goal_rate": 0.27,
                "shots_on_target": 0.7635,
                "total_shots": 1.6557,
                "expected_assists": 0.0359,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.884,
                "fouls_drawn": 0.3085,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3256,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1808,
                "xgot": 0.2138,
                "offsides": 0.8855,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.8863
              },
              "params": {
                "blend_weight": 0.0031,
                "history_matches": 37,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7768,
                "prior_reliability": 0.04,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.6478,
                  "after": 1.6557
                },
                {
                  "stat": "wasFouled",
                  "before": 0.3014,
                  "after": 0.3085
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.283,
                "goals": 0.27,
                "goal_rate": 0.27,
                "shots_on_target": 0.7635,
                "total_shots": 1.6557,
                "expected_assists": 0.0359,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.884,
                "fouls_drawn": 0.3085,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3256,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1808,
                "xgot": 0.2138,
                "offsides": 0.8855,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.8863
              },
              "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.2398,
                "goals": 0.2287,
                "goal_rate": 0.2287,
                "shots_on_target": 0.6468,
                "total_shots": 1.4027,
                "expected_assists": 0.0359,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.884,
                "fouls_drawn": 0.3085,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3256,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1532,
                "xgot": 0.1811,
                "offsides": 0.8855,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.7509,
                "duel_xg_multiplier": 0.8472,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.8472,
                  "skill_edge": -0.1059,
                  "height_edge": 0.002,
                  "attacker_skill": 0.6161,
                  "defender_skill": 0.8515,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Luka Vušković",
                      "market_value": 64000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8862
                    },
                    {
                      "player": "Ferdi Kadıoğlu",
                      "market_value": 36000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8168
                    }
                  ],
                  "xg_override": 0.2398
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.6557,
                  "after": 1.4027
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8863,
                  "after": 0.7509
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7635,
                  "after": 0.6468
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.283,
                  "after": 0.2398
                },
                {
                  "stat": "goals",
                  "before": 0.27,
                  "after": 0.2287
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2138,
                  "after": 0.1811
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1808,
                  "after": 0.1532
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "expected_goals": 0.2663,
                "goal_rate": 0.2287,
                "goals": 0,
                "shots_on_target": 0.6468,
                "total_shots": 1.4027,
                "expected_assists": 0.0399,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.884,
                "fouls_drawn": 0.3085,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3256,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1532,
                "xgot": 0.2012,
                "offsides": 0.8855,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.7509,
                "duel_xg_multiplier": 0.8472,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9617,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2398,
                  "after": 0.2663
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 14 by projected rating, fifa_overall 75.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.2663,
                "goal_rate": 0.2287,
                "goals": 0,
                "shots_on_target": 0.6468,
                "total_shots": 1.4027,
                "expected_assists": 0.0399,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.884,
                "fouls_drawn": 0.3085,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3256,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1532,
                "xgot": 0.2012,
                "offsides": 0.8855,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.7509,
                "duel_xg_multiplier": 0.8472,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9617,
                "creation_factor": 0.8,
                "fifa_overall": 75.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": 3432,
                "fifa_rank": 2208.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.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.2663,
                "goal_rate": 0.2287,
                "goals": 1,
                "shots_on_target": 0.6468,
                "total_shots": 1.4027,
                "expected_assists": 0.0399,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.884,
                "fouls_drawn": 0.3085,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3256,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1532,
                "xgot": 0.2012,
                "offsides": 0.8855,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.7509,
                "duel_xg_multiplier": 0.8472,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2338,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9617,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.2338,
                "scorer_weight": 0.2561,
                "squad_weight_total": 1.2716,
                "weight_share": 0.2014,
                "finishing_factor": 0.9617,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.2663,
                "goal_rate": 0.2287,
                "goals": 1,
                "shots_on_target": 0.6468,
                "total_shots": 1.4027,
                "expected_assists": 0.0399,
                "key_pass": 0.5253,
                "rating": 6.6982,
                "minutes": 69.91,
                "total_pass": 7.0655,
                "accurate_pass": 4.1706,
                "duels_won": 2.2794,
                "total_long_balls": 0.3067,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.1791,
                "accurate_opp_half_passes": 2.6555,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 14.2374,
                "possession_lost": 4.9718,
                "dispossessed": 0.528,
                "duels_lost": 5.4354,
                "aerial_lost": 3.3212,
                "total_contest": 0.8124,
                "won_contest": 0.2436,
                "ball_recovery": 1.2436,
                "challenges_lost": 0.3722,
                "fouls": 0.884,
                "fouls_drawn": 0.3085,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3256,
                "tackles": 0.3266,
                "clearances": 0.9773,
                "blocks": 0.0356,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1532,
                "xgot": 0.2012,
                "offsides": 0.8855,
                "ball_carries": 2.1708,
                "total_progression": 0.0,
                "shots_off_target": 0.7509,
                "duel_xg_multiplier": 0.8472,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2338,
                "projected_assists": 0,
                "assist_probability": 0.0391,
                "finishing_factor": 0.9617,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0391,
                "provider_weight": 0.0319,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0315,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Nilson Angulo": {
          "player_id": 1116571,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 182,
          "market_value": 16500000,
          "stats": {
            "expected_goals": 0.1354,
            "goal_rate": 0.124,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0874,
            "key_pass": 1,
            "rating": 6.7315,
            "minutes": 69,
            "total_pass": 15,
            "accurate_pass": 13,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 10,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 31,
            "possession_lost": 8.9077,
            "dispossessed": 1.0729,
            "duels_lost": 5,
            "aerial_lost": 2,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.185,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0453,
            "offsides": 0,
            "ball_carries": 8,
            "total_progression": 56,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8217,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
            "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1266,
            "projected_assists": 0,
            "assist_probability": 0.0837,
            "finishing_factor": 1.0122,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 60,
                "rating": 5.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.446,
                "expected_assists": 0.0073,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 11,
                "key_pass": 1,
                "interceptions": 3,
                "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "tackles": 2,
                "tackles_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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 64,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0744,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 22,
                "tackles": 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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 65,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0412,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 1,
                "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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 59,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1546,
                "expected_assists": 0.0094,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 61,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2827,
                "expected_assists": 0.0165,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 10,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 2,
                "aerial_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 77,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0093,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 15,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 1,
                "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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 11,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0098,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 14023982,
              "match_date": "2026-03-03",
              "home_team": "Leeds United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 88,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 3,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 4,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023970,
              "match_date": "2026-02-28",
              "home_team": "Bournemouth",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 14,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0158,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 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": 3804,
            "combined_rank_score": 1805.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3274.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7315,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nilson Angulo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kenny McLean",
                  "ranking": 3799
                },
                {
                  "player_name": "Carlos Izquierdoz",
                  "ranking": 3800
                },
                {
                  "player_name": "Bartłomiej Drągowski",
                  "ranking": 3801
                },
                {
                  "player_name": "Eliesse Ben Seghir",
                  "ranking": 3802
                },
                {
                  "player_name": "Roony Bardghji",
                  "ranking": 3803
                }
              ],
              "lower": [
                {
                  "player_name": "James McAtee",
                  "ranking": 3805
                },
                {
                  "player_name": "Jens-Lys Cajuste",
                  "ranking": 3806
                },
                {
                  "player_name": "Yáser Asprilla",
                  "ranking": 3807
                },
                {
                  "player_name": "Stephen Eustaquio",
                  "ranking": 3808
                },
                {
                  "player_name": "Darío Osorio",
                  "ranking": 3809
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.764,
          "history_matches": 13,
          "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": 13,
            "data_confidence": 0.764,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0075,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 122.0,
              "goals_per90": 0.7142857142857143,
              "assists_per90": 0.0,
              "shots_per90": 1.48,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.0933
            },
            "rationale": "XGBoost regressor (F_service) evaluated 13 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, rel: 0.09, gls/90: 0.7142857142857143, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1473,
                "goals": 0.143,
                "goal_rate": 0.143,
                "shots_on_target": 0.5479,
                "total_shots": 1.4164,
                "expected_assists": 0.0781,
                "key_pass": 0.8518,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.3355,
                "accurate_pass": 12.7303,
                "duels_won": 3.8149,
                "total_long_balls": 0.2278,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.7181,
                "accurate_opp_half_passes": 9.5305,
                "crosses_total": 1.1458,
                "crosses_accurate": 0.1147,
                "touches": 30.8264,
                "possession_lost": 8.8414,
                "dispossessed": 1.0649,
                "duels_lost": 5.2202,
                "aerial_lost": 1.6766,
                "total_contest": 2.3666,
                "won_contest": 1.398,
                "ball_recovery": 2.1681,
                "challenges_lost": 0.5008,
                "fouls": 1.1944,
                "fouls_drawn": 0.8418,
                "assists": 0.1868,
                "assist_rate": 0.1868,
                "interceptions": 0.9497,
                "tackles_won": 0.585,
                "tackles": 1.1237,
                "clearances": 0.6131,
                "blocks": 0.1349,
                "big_chances_created": 0.1987,
                "big_chances_missed": 0.4975,
                "xgot": 0.0493,
                "offsides": 0.0736,
                "ball_carries": 7.5005,
                "total_progression": 55.7958,
                "progressive_carries": 2.3658,
                "shots_off_target": 0.8685
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.1706,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.145,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1233,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1048,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.0891,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0757,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0644,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0547,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-03",
                    "opponent": "Leeds United",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0465,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "Bournemouth",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0395,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 13.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.1269,
                  "totalOppositionHalfPasses": 10.9062,
                  "accurateOppositionHalfPasses": 8.8063,
                  "accuratePass": 11.7022,
                  "totalShots": 0.9129
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.14732696115970612,
                    "model_output": 0.1473,
                    "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.0655
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0516
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0163
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0146
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0068
                        }
                      ],
                      "others": -0.0279,
                      "total": 0.1473,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.284683
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.216836
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.079741
                        },
                        {
                          "name": "goals",
                          "margin": -0.077144
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.037848
                        }
                      ],
                      "others_margin": -0.173537
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14301221072673798,
                    "model_output": 0.143,
                    "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.0648
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0445
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0271
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0172
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.0265,
                      "total": 0.143,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.276279
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.180943
                        },
                        {
                          "name": "goals",
                          "margin": -0.128695
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.091234
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.05842
                        }
                      ],
                      "others_margin": -0.170948
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5479241609573364,
                    "model_output": 0.5479,
                    "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.181
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.035
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0316
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0266
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0243
                        }
                      ],
                      "others": -0.0526,
                      "total": 0.5479,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.290457
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.050027
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.047417
                        },
                        {
                          "name": "goals",
                          "margin": -0.04166
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.039597
                        }
                      ],
                      "others_margin": -0.09158
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.4164485931396484,
                    "model_output": 1.4164,
                    "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.4515
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1808
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.058
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0526
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0455
                        }
                      ],
                      "others": -0.0769,
                      "total": 1.4164,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.451452
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.180826
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.058042
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.05256
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.045544
                        }
                      ],
                      "others_margin": -0.076738
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07810375094413757,
                    "model_output": 0.0781,
                    "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.0199
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0081
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0046
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0042
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0038
                        }
                      ],
                      "others": -0.0022,
                      "total": 0.0781,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.269236
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.100977
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.058309
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.053129
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.048715
                        }
                      ],
                      "others_margin": -0.027418
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.8518053293228149,
                    "model_output": 0.8518,
                    "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.2606
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0545
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0316
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0306
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0267
                        }
                      ],
                      "others": -0.0026,
                      "total": 0.8518,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.326949
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.060118
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.035302
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.034101
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.030737
                        }
                      ],
                      "others_margin": -0.003133
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.731507301330566,
                    "model_output": 6.7315,
                    "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.0537
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0307
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.016
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0122
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0096
                        }
                      ],
                      "others": -0.0595,
                      "total": 6.7315,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.053718
                        },
                        {
                          "name": "rating",
                          "margin": -0.030675
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.015987
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.012153
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.009565
                        }
                      ],
                      "others_margin": -0.059428
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 13,
                  "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.0075, quality 0.595)",
              "stats": {
                "expected_goals": 0.1484,
                "goals": 0.1441,
                "goal_rate": 0.1441,
                "shots_on_target": 0.552,
                "total_shots": 1.4271,
                "expected_assists": 0.0787,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1544,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2034,
                "fouls_drawn": 0.8481,
                "assists": 0.1882,
                "assist_rate": 0.1882,
                "interceptions": 0.9568,
                "tackles_won": 0.5894,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.5012,
                "xgot": 0.0497,
                "offsides": 0.0742,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.875
              },
              "params": {
                "market_value_eur": 16500000,
                "quality_factor": 0.5953,
                "boost_factor": 1.0075,
                "reference_quality": 0.505,
                "history_matches": 13,
                "history_shrink": 0.2778,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0168)",
              "stats": {
                "expected_goals": 0.1484,
                "goals": 0.1509,
                "goal_rate": 0.1509,
                "shots_on_target": 0.5523,
                "total_shots": 1.4222,
                "expected_assists": 0.0787,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1719,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2016,
                "fouls_drawn": 0.8708,
                "assists": 0.185,
                "assist_rate": 0.185,
                "interceptions": 0.9499,
                "tackles_won": 0.5887,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.5012,
                "xgot": 0.0497,
                "offsides": 0.073,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.875
              },
              "params": {
                "blend_weight": 0.0168,
                "history_matches": 13,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7679,
                "prior_reliability": 0.0933,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.8481,
                  "after": 0.8708
                },
                {
                  "stat": "totalCross",
                  "before": 1.1544,
                  "after": 1.1719
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.9568,
                  "after": 0.9499
                },
                {
                  "stat": "goals",
                  "before": 0.1441,
                  "after": 0.1509
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1484,
                "goals": 0.1509,
                "goal_rate": 0.1509,
                "shots_on_target": 0.5523,
                "total_shots": 1.4273,
                "expected_assists": 0.0787,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1719,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2016,
                "fouls_drawn": 0.8708,
                "assists": 0.185,
                "assist_rate": 0.185,
                "interceptions": 0.9499,
                "tackles_won": 0.5887,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.5012,
                "xgot": 0.0497,
                "offsides": 0.073,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.875
              },
              "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.1219,
                "goals": 0.124,
                "goal_rate": 0.124,
                "shots_on_target": 0.4538,
                "total_shots": 1.1728,
                "expected_assists": 0.0787,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1719,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2016,
                "fouls_drawn": 0.8708,
                "assists": 0.185,
                "assist_rate": 0.185,
                "interceptions": 0.9499,
                "tackles_won": 0.5887,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.4118,
                "xgot": 0.0408,
                "offsides": 0.073,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.719,
                "duel_xg_multiplier": 0.8217,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.8217,
                  "skill_edge": -0.1153,
                  "height_edge": -0.006,
                  "attacker_skill": 0.5953,
                  "defender_skill": 0.8515,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Luka Vušković",
                      "market_value": 64000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8862
                    },
                    {
                      "player": "Ferdi Kadıoğlu",
                      "market_value": 36000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.8168
                    }
                  ],
                  "xg_override": 0.1219
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.4273,
                  "after": 1.1728
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.875,
                  "after": 0.719
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5523,
                  "after": 0.4538
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.5012,
                  "after": 0.4118
                },
                {
                  "stat": "goals",
                  "before": 0.1509,
                  "after": 0.124
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1484,
                  "after": 0.1219
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0497,
                  "after": 0.0408
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "expected_goals": 0.1354,
                "goal_rate": 0.124,
                "goals": 0,
                "shots_on_target": 0.4538,
                "total_shots": 1.1728,
                "expected_assists": 0.0874,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1719,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2016,
                "fouls_drawn": 0.8708,
                "assist_rate": 0.185,
                "assists": 0,
                "interceptions": 0.9499,
                "tackles_won": 0.5887,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.4118,
                "xgot": 0.0453,
                "offsides": 0.073,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.719,
                "duel_xg_multiplier": 0.8217,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0122,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1219,
                  "after": 0.1354
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0787,
                  "after": 0.0874
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 11 by projected rating, fifa_overall 73.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.1354,
                "goal_rate": 0.124,
                "goals": 0,
                "shots_on_target": 0.4538,
                "total_shots": 1.1728,
                "expected_assists": 0.0874,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1719,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2016,
                "fouls_drawn": 0.8708,
                "assist_rate": 0.185,
                "assists": 0,
                "interceptions": 0.9499,
                "tackles_won": 0.5887,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.4118,
                "xgot": 0.0453,
                "offsides": 0.073,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.719,
                "duel_xg_multiplier": 0.8217,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0122,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3804,
                "fifa_rank": 3274.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.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.1354,
                "goal_rate": 0.124,
                "goals": 0,
                "shots_on_target": 0.4538,
                "total_shots": 1.1728,
                "expected_assists": 0.0874,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1719,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2016,
                "fouls_drawn": 0.8708,
                "assist_rate": 0.185,
                "assists": 0,
                "interceptions": 0.9499,
                "tackles_won": 0.5887,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.4118,
                "xgot": 0.0453,
                "offsides": 0.073,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.719,
                "duel_xg_multiplier": 0.8217,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1266,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0122,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1266,
                "scorer_weight": 0.1371,
                "squad_weight_total": 1.2716,
                "weight_share": 0.1078,
                "finishing_factor": 1.0122,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.1354,
                "goal_rate": 0.124,
                "goals": 0,
                "shots_on_target": 0.4538,
                "total_shots": 1.1728,
                "expected_assists": 0.0874,
                "key_pass": 0.8582,
                "rating": 6.7315,
                "minutes": 69.11,
                "total_pass": 15.4505,
                "accurate_pass": 12.8258,
                "duels_won": 3.8435,
                "total_long_balls": 0.2295,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.806,
                "accurate_opp_half_passes": 9.602,
                "crosses_total": 1.1719,
                "crosses_accurate": 0.1156,
                "touches": 31.0576,
                "possession_lost": 8.9077,
                "dispossessed": 1.0729,
                "duels_lost": 5.2594,
                "aerial_lost": 1.6892,
                "total_contest": 2.3843,
                "won_contest": 1.4085,
                "ball_recovery": 2.1844,
                "challenges_lost": 0.5046,
                "fouls": 1.2016,
                "fouls_drawn": 0.8708,
                "assist_rate": 0.185,
                "assists": 0,
                "interceptions": 0.9499,
                "tackles_won": 0.5887,
                "tackles": 1.1321,
                "clearances": 0.6177,
                "blocks": 0.1359,
                "big_chances_created": 0.2002,
                "big_chances_missed": 0.4118,
                "xgot": 0.0453,
                "offsides": 0.073,
                "ball_carries": 7.5568,
                "total_progression": 56.2143,
                "progressive_carries": 2.3835,
                "shots_off_target": 0.719,
                "duel_xg_multiplier": 0.8217,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Luka Vušković, Ferdi Kadıoğlu",
                "opponent_faced": "Luka Vušković, Ferdi Kadıoğlu",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1266,
                "projected_assists": 0,
                "assist_probability": 0.0837,
                "finishing_factor": 1.0122,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0837,
                "provider_weight": 0.1093,
                "squad_weight_total": 1.0119,
                "weight_share": 0.108,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Enzo Le Fée": {
          "player_id": 984014,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 28,
          "height": 173,
          "market_value": 26000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.1945,
            "assist_rate": 0.1378,
            "assists": 0,
            "expected_goals": 0.2499,
            "goal_rate": 0.2057,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 6.9158,
            "minutes": 89,
            "total_pass": 31,
            "accurate_pass": 25,
            "duels_won": 5,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 10,
            "accurate_own_half_passes": 9,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 16,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 49,
            "possession_lost": 12.4088,
            "dispossessed": 0.9306,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 0,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.2769,
            "ball_carries": 12,
            "total_progression": 29,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9239,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.368,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Diego Gómez",
            "opponent_faced": "Diego Gómez",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.2211,
            "projected_assists": 0,
            "assist_probability": 0.1768,
            "finishing_factor": 0.9298,
            "creation_factor": 0.8343,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.5204,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 21,
                "key_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8452,
                "expected_assists": 0.5894,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 15,
                "accurate_pass": 10,
                "key_pass": 2,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8418,
                "expected_assists": 0.0255,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 36,
                "accurate_pass": 23,
                "tackles": 4,
                "tackles_won": 2,
                "aerial_won": 3,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 89,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3659,
                "expected_assists": 0.175,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 23,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 80,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0292,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 39,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 89,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.079,
                "expected_assists": 0.6556,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 40,
                "accurate_pass": 32,
                "key_pass": 4,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 2,
                "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1244,
                "expected_assists": 0.2857,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 33,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2588,
                "expected_assists": 0.3474,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 46,
                "key_pass": 4,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0553,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 6,
                "tackles_won": 3,
                "clearances": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1152,
                "expected_assists": 0.3957,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 34,
                "accurate_pass": 26,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 1283,
            "combined_rank_score": 557.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 427.0,
            "sofascore_rating": 6.9167,
            "sofascore_appearances": 36.0,
            "fifa_rank": 687.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9158,
            "source_file": "data/player_rankings.csv",
            "player_name": "Enzo Le Fée",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gi-pyo Kwon",
                  "ranking": 1278
                },
                {
                  "player_name": "Jeon Hyeon-byung",
                  "ranking": 1279
                },
                {
                  "player_name": "Nikita Demchenko",
                  "ranking": 1280
                },
                {
                  "player_name": "Alessio Romagnoli",
                  "ranking": 1281
                },
                {
                  "player_name": "Alex Meret",
                  "ranking": 1282
                }
              ],
              "lower": [
                {
                  "player_name": "Osvaldo González",
                  "ranking": 1284
                },
                {
                  "player_name": "Jae-seong Park",
                  "ranking": 1285
                },
                {
                  "player_name": "Mario Hermoso",
                  "ranking": 1286
                },
                {
                  "player_name": "Giovani Lo Celso",
                  "ranking": 1287
                },
                {
                  "player_name": "Lucas Torreira",
                  "ranking": 1288
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 41,
          "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": 41,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0059,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 168.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.14,
              "shots_on_target_pct": 25.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (M_service) evaluated 41 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, 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.807,
                "expected_assists": 0.174,
                "assists": 0.1382,
                "assist_rate": 0.1382,
                "expected_goals": 0.2421,
                "goals": 0.2233,
                "goal_rate": 0.2233,
                "shots_on_target": 0.674,
                "total_shots": 1.7338,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.2677,
                "accurate_pass": 24.744,
                "duels_won": 5.0111,
                "total_long_balls": 1.4295,
                "accurate_long_balls": 0.811,
                "total_own_half_passes": 10.356,
                "accurate_own_half_passes": 8.9523,
                "total_opp_half_passes": 20.9117,
                "accurate_opp_half_passes": 15.7916,
                "crosses_total": 3.0756,
                "crosses_accurate": 1.109,
                "touches": 49.1981,
                "possession_lost": 12.336,
                "dispossessed": 0.9251,
                "duels_lost": 4.3465,
                "aerial_won": 0.5104,
                "aerial_lost": 0.9155,
                "interceptions": 0.7902,
                "tackles_won": 1.3402,
                "tackles": 2.049,
                "clearances": 0.3474,
                "total_contest": 1.7565,
                "won_contest": 0.7972,
                "challenges_lost": 1.049,
                "fouls": 0.4977,
                "fouls_drawn": 1.6545,
                "blocks": 0.1208,
                "big_chances_created": 0.9064,
                "big_chances_missed": 0.2394,
                "xgot": 0.2682,
                "ball_carries": 11.9676,
                "total_progression": 28.8247,
                "progressive_carries": 1.5759,
                "shots_off_target": 1.0598
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.7229,
                  "creative_index": 0.994,
                  "expectedGoals": 0.2846,
                  "expectedAssists": 0.3111,
                  "onTargetScoringAttempt": 0.6459
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.8070160150527954,
                    "model_output": 1.807,
                    "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": "creative_index",
                          "contribution": 0.1919
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1468
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.145
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.1083
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0838
                        }
                      ],
                      "others": 0.245,
                      "total": 1.807,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.196034
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.127661
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111886
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.076056
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.055124
                        }
                      ],
                      "others_margin": 0.145731
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.17402812838554382,
                    "model_output": 0.174,
                    "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": "expectedAssists",
                          "contribution": 0.0159
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0148
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0128
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0073
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0071
                        }
                      ],
                      "others": 0.0303,
                      "total": 0.174,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.170388
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.135667
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.104149
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.055267
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.050844
                        }
                      ],
                      "others_margin": 0.191194
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.1381828635931015,
                    "model_output": 0.1382,
                    "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": "expectedAssists",
                          "contribution": 0.0105
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0116
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0122
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0059
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0059
                        }
                      ],
                      "others": 0.0069,
                      "total": 0.1382,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.11669
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.114529
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.10797
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.048086
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.045656
                        }
                      ],
                      "others_margin": 0.050299
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.24205254018306732,
                    "model_output": 0.2421,
                    "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.0551
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.031
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0244
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0198
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0116
                        }
                      ],
                      "others": 0.0058,
                      "total": 0.2421,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.45976
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.188289
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126732
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.092049
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.050425
                        }
                      ],
                      "others_margin": 0.024061
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.22332870960235596,
                    "model_output": 0.2233,
                    "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.0393
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0244
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0179
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0194
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0201
                        }
                      ],
                      "others": 0.0046,
                      "total": 0.2233,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.338571
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.163839
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.105222
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.102804
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.096375
                        }
                      ],
                      "others_margin": 0.020493
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6740067005157471,
                    "model_output": 0.674,
                    "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.1072
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.1052
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0671
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0501
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0221
                        }
                      ],
                      "others": -0.0017,
                      "total": 0.674,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.285799
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.218298
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.1179
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.07979
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.033198
                        }
                      ],
                      "others_margin": -0.002462
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.7338416576385498,
                    "model_output": 1.7338,
                    "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.4133
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1612
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.12
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0973
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0557
                        }
                      ],
                      "others": 0.0072,
                      "total": 1.7338,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.413337
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.161238
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.119987
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.097333
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.05566
                        }
                      ],
                      "others_margin": 0.007142
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.915755271911621,
                    "model_output": 6.9158,
                    "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.0278
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.023
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0229
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.019
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0189
                        }
                      ],
                      "others": 0.0011,
                      "total": 6.9158,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.027784
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.022962
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.022851
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.019025
                        },
                        {
                          "name": "rating",
                          "margin": 0.018901
                        }
                      ],
                      "others_margin": 0.001062
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 41,
                  "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.0059, quality 0.686)",
              "stats": {
                "key_pass": 1.8177,
                "expected_assists": 0.1751,
                "assists": 0.139,
                "assist_rate": 0.139,
                "expected_goals": 0.2435,
                "goals": 0.2246,
                "goal_rate": 0.2246,
                "shots_on_target": 0.678,
                "total_shots": 1.7441,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0937,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.5134,
                "aerial_lost": 0.9209,
                "interceptions": 0.7949,
                "tackles_won": 1.3481,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5006,
                "fouls_drawn": 1.6643,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2408,
                "xgot": 0.2698,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 1.0661
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0059,
                "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.0090)",
              "stats": {
                "key_pass": 1.8177,
                "expected_assists": 0.1751,
                "assists": 0.1378,
                "assist_rate": 0.1378,
                "expected_goals": 0.2435,
                "goals": 0.2226,
                "goal_rate": 0.2226,
                "shots_on_target": 0.6767,
                "total_shots": 1.7474,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0846,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.5134,
                "aerial_lost": 0.9209,
                "interceptions": 0.7924,
                "tackles_won": 1.3453,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5008,
                "fouls_drawn": 1.6634,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2408,
                "xgot": 0.2698,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 1.0661
              },
              "params": {
                "blend_weight": 0.009,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.987,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 3.0937,
                  "after": 3.0846
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.8177,
                "expected_assists": 0.1751,
                "assists": 0.1378,
                "assist_rate": 0.1378,
                "expected_goals": 0.2435,
                "goals": 0.2226,
                "goal_rate": 0.2226,
                "shots_on_target": 0.6767,
                "total_shots": 1.7474,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0846,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.5134,
                "aerial_lost": 0.9209,
                "interceptions": 0.7924,
                "tackles_won": 1.3453,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5008,
                "fouls_drawn": 1.6634,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2408,
                "xgot": 0.2698,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 1.0661
              },
              "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": 1.8177,
                "expected_assists": 0.1751,
                "assists": 0.1378,
                "assist_rate": 0.1378,
                "expected_goals": 0.225,
                "goals": 0.2057,
                "goal_rate": 0.2057,
                "shots_on_target": 0.6252,
                "total_shots": 1.6144,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0846,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.9,
                "aerial_lost": 0.9209,
                "interceptions": 0.7924,
                "tackles_won": 1.3453,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5008,
                "fouls_drawn": 1.6634,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2225,
                "xgot": 0.2493,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 0.985,
                "duel_xg_multiplier": 0.9239,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.368,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Diego Gómez",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.368,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9239,
                  "skill_edge": -0.0038,
                  "height_edge": -0.048,
                  "attacker_skill": 0.7219,
                  "defender_skill": 0.7304,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Diego Gómez",
                      "market_value": 27000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7304
                    }
                  ],
                  "xg_override": 0.225
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.5134,
                  "after": 0.9
                },
                {
                  "stat": "totalShots",
                  "before": 1.7474,
                  "after": 1.6144
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.0661,
                  "after": 0.985
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6767,
                  "after": 0.6252
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2698,
                  "after": 0.2493
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2435,
                  "after": 0.225
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2408,
                  "after": 0.2225
                },
                {
                  "stat": "goals",
                  "before": 0.2226,
                  "after": 0.2057
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "key_pass": 1.8177,
                "expected_assists": 0.1945,
                "assist_rate": 0.1378,
                "assists": 0,
                "expected_goals": 0.2499,
                "goal_rate": 0.2057,
                "goals": 0,
                "shots_on_target": 0.6252,
                "total_shots": 1.6144,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0846,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.9,
                "aerial_lost": 0.9209,
                "interceptions": 0.7924,
                "tackles_won": 1.3453,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5008,
                "fouls_drawn": 1.6634,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2225,
                "xgot": 0.2769,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 0.985,
                "duel_xg_multiplier": 0.9239,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.368,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9298,
                "creation_factor": 0.8343
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.225,
                  "after": 0.2499
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1751,
                  "after": 0.1945
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 3 by projected rating, fifa_overall 80.0; not used by the projection)",
              "stats": {
                "key_pass": 1.8177,
                "expected_assists": 0.1945,
                "assist_rate": 0.1378,
                "assists": 0,
                "expected_goals": 0.2499,
                "goal_rate": 0.2057,
                "goals": 0,
                "shots_on_target": 0.6252,
                "total_shots": 1.6144,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0846,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.9,
                "aerial_lost": 0.9209,
                "interceptions": 0.7924,
                "tackles_won": 1.3453,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5008,
                "fouls_drawn": 1.6634,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2225,
                "xgot": 0.2769,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 0.985,
                "duel_xg_multiplier": 0.9239,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.368,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9298,
                "creation_factor": 0.8343,
                "fifa_overall": 80.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": 1283,
                "fifa_rank": 687.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": {
                "key_pass": 1.8177,
                "expected_assists": 0.1945,
                "assist_rate": 0.1378,
                "assists": 0,
                "expected_goals": 0.2499,
                "goal_rate": 0.2057,
                "goals": 0,
                "shots_on_target": 0.6252,
                "total_shots": 1.6144,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0846,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.9,
                "aerial_lost": 0.9209,
                "interceptions": 0.7924,
                "tackles_won": 1.3453,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5008,
                "fouls_drawn": 1.6634,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2225,
                "xgot": 0.2769,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 0.985,
                "duel_xg_multiplier": 0.9239,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.368,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.2211,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9298,
                "creation_factor": 0.8343,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2211,
                "scorer_weight": 0.2324,
                "squad_weight_total": 1.2716,
                "weight_share": 0.1827,
                "finishing_factor": 0.9298,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.8177,
                "expected_assists": 0.1945,
                "assist_rate": 0.1378,
                "assists": 0,
                "expected_goals": 0.2499,
                "goal_rate": 0.2057,
                "goals": 0,
                "shots_on_target": 0.6252,
                "total_shots": 1.6144,
                "rating": 6.9158,
                "minutes": 88.83,
                "total_pass": 31.4522,
                "accurate_pass": 24.89,
                "duels_won": 5.0407,
                "total_long_balls": 1.4379,
                "accurate_long_balls": 0.8158,
                "total_own_half_passes": 10.4171,
                "accurate_own_half_passes": 9.0051,
                "total_opp_half_passes": 21.0351,
                "accurate_opp_half_passes": 15.8848,
                "crosses_total": 3.0846,
                "crosses_accurate": 1.1155,
                "touches": 49.4884,
                "possession_lost": 12.4088,
                "dispossessed": 0.9306,
                "duels_lost": 4.3721,
                "aerial_won": 0.9,
                "aerial_lost": 0.9209,
                "interceptions": 0.7924,
                "tackles_won": 1.3453,
                "tackles": 2.0611,
                "clearances": 0.3494,
                "total_contest": 1.7669,
                "won_contest": 0.8019,
                "challenges_lost": 1.0552,
                "fouls": 0.5008,
                "fouls_drawn": 1.6634,
                "blocks": 0.1215,
                "big_chances_created": 0.9117,
                "big_chances_missed": 0.2225,
                "xgot": 0.2769,
                "ball_carries": 12.0382,
                "total_progression": 28.9948,
                "progressive_carries": 1.5852,
                "shots_off_target": 0.985,
                "duel_xg_multiplier": 0.9239,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.368,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.2211,
                "projected_assists": 0,
                "assist_probability": 0.1768,
                "finishing_factor": 0.9298,
                "creation_factor": 0.8343,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1768,
                "provider_weight": 0.1623,
                "squad_weight_total": 1.0119,
                "weight_share": 0.1604,
                "creation_factor": 0.8343,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Thomas Meunier": {
          "player_id": 128587,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 12,
          "height": 190,
          "market_value": 1400000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.6988,
            "minutes": 82,
            "total_pass": 28,
            "accurate_pass": 24,
            "duels_won": 1,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 10,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 41,
            "possession_lost": 7.97,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.2553,
            "assists": 1,
            "expected_goals": 0.0714,
            "expected_assists": 0.1571,
            "shots_on_target": 1,
            "big_chances_created": 0,
            "xgot": 0.0078,
            "ball_carries": 9,
            "total_progression": 37,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.76,
            "opponent_faced": "Charalampos Kostoulas",
            "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.0689,
            "projected_assists": 1,
            "assist_probability": 0.1454,
            "finishing_factor": 0.8,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 79,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.4523,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 76,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1298,
                "expected_assists": 0.003,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "clearances": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 64,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1083,
                "expected_assists": 0.0006,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 12,
                "accurate_pass": 10,
                "interceptions": 1,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0169,
                "expected_assists": 0.0503,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 42,
                "accurate_pass": 33,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 7,
                "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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0807,
                "expected_assists": 0.0837,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 61,
                "accurate_pass": 54,
                "tackles": 2,
                "interceptions": 2,
                "aerial_won": 2,
                "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": 1428,
            "combined_rank_score": 592.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 101.0,
            "sofascore_rating": 7.4714,
            "sofascore_appearances": 7.0,
            "fifa_rank": 1083.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6988,
            "source_file": "data/player_rankings.csv",
            "player_name": "Thomas Meunier",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Oleg Zoteev",
                  "ranking": 1423
                },
                {
                  "player_name": "Samandar Ochilov",
                  "ranking": 1424
                },
                {
                  "player_name": "Aleix Febas",
                  "ranking": 1425
                },
                {
                  "player_name": "Seong-uh Park",
                  "ranking": 1426
                },
                {
                  "player_name": "Umarbek Eshmuradov",
                  "ranking": 1427
                }
              ],
              "lower": [
                {
                  "player_name": "Jacob Murphy",
                  "ranking": 1429
                },
                {
                  "player_name": "Warren Zaïre-Emery",
                  "ranking": 1430
                },
                {
                  "player_name": "Levi Colwill",
                  "ranking": 1431
                },
                {
                  "player_name": "Fernando de Paul",
                  "ranking": 1432
                },
                {
                  "player_name": "Yoon Jae-woon",
                  "ranking": 1433
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.582,
          "history_matches": 5,
          "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": 5,
            "data_confidence": 0.582,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9899,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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.5,
              "shots_on_target_pct": 66.7,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, 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.7358,
                "tackles": 1.3812,
                "tackles_won": 0.8926,
                "clearances": 2.9349,
                "aerial_won": 0.8383,
                "total_shots": 0.8852,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.6644,
                "accurate_pass": 23.8847,
                "duels_won": 1.4722,
                "total_long_balls": 2.7167,
                "accurate_long_balls": 2.1407,
                "total_own_half_passes": 14.6128,
                "accurate_own_half_passes": 13.3608,
                "total_opp_half_passes": 14.0516,
                "accurate_opp_half_passes": 10.5239,
                "crosses_total": 1.5586,
                "crosses_accurate": 0.1656,
                "touches": 41.4752,
                "possession_lost": 8.0513,
                "dispossessed": 0.0,
                "duels_lost": 3.0397,
                "aerial_lost": 1.4593,
                "total_contest": 0.4763,
                "won_contest": 0.1407,
                "ball_recovery": 2.9759,
                "challenges_lost": 0.6396,
                "fouls": 0.6052,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2696,
                "assist_rate": 0.2696,
                "expected_goals": 0.065,
                "expected_assists": 0.1428,
                "shots_on_target": 0.7304,
                "big_chances_created": 0.2696,
                "xgot": 0.0071,
                "ball_carries": 9.53,
                "total_progression": 37.1618,
                "progressive_carries": 1.0101,
                "key_pass": 0.4352,
                "shots_off_target": 0.1548
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.3516,
                  "aerialWon": 0.5107,
                  "totalClearance_p90": 2.5903,
                  "totalTackle": 0.8208,
                  "totalPass": 28.6644
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7358132600784302,
                    "model_output": 0.7358,
                    "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.1067
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0885
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0263
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0237
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0209
                        }
                      ],
                      "others": -0.0688,
                      "total": 0.7358,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117278
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.096311
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.030549
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.028301
                        },
                        {
                          "name": "touches",
                          "margin": -0.02568
                        }
                      ],
                      "others_margin": -0.089216
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.3812049627304077,
                    "model_output": 1.3812,
                    "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.1838
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1446
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0693
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0598
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0351
                        }
                      ],
                      "others": 0.0421,
                      "total": 1.3812,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123879
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.096161
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.049589
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.044867
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.026587
                        }
                      ],
                      "others_margin": 0.031018
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8925997018814087,
                    "model_output": 0.8926,
                    "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.1065
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0872
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0656
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0395
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0342
                        }
                      ],
                      "others": 0.0898,
                      "total": 0.8926,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117457
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.095151
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.078021
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.050061
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.043554
                        }
                      ],
                      "others_margin": 0.106017
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.934861183166504,
                    "model_output": 2.9349,
                    "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.4819
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4271
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.3456
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1057
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0668
                        }
                      ],
                      "others": 0.0564,
                      "total": 2.9349,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.150369
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.13438
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.107312
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.035245
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.022936
                        }
                      ],
                      "others_margin": 0.01936
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.8382546305656433,
                    "model_output": 0.8383,
                    "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.4218
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1157
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0925
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0773
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0275
                        }
                      ],
                      "others": -0.0403,
                      "total": 0.8383,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.364104
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11373
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.089884
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.081866
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.030784
                        }
                      ],
                      "others_margin": -0.047079
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.885182797908783,
                    "model_output": 0.8852,
                    "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.3677
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0677
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0393
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0271
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0266
                        }
                      ],
                      "others": 0.0175,
                      "total": 0.8852,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.367671
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.067686
                        },
                        {
                          "name": "rating",
                          "margin": -0.03928
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.02708
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.026587
                        }
                      ],
                      "others_margin": 0.017481
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.698790073394775,
                    "model_output": 6.6988,
                    "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.032
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0206
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.0159
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0121
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.012
                        }
                      ],
                      "others": -0.0577,
                      "total": 6.6988,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.032008
                        },
                        {
                          "name": "rating",
                          "margin": -0.020599
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": -0.015924
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.012084
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012049
                        }
                      ],
                      "others_margin": -0.057693
                    }
                  }
                ],
                "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 0.9899, quality 0.437)",
              "stats": {
                "interceptions": 0.7284,
                "tackles": 1.3673,
                "tackles_won": 0.8836,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8763,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.5429,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5991,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2669,
                "assist_rate": 0.2669,
                "expected_goals": 0.0643,
                "expected_assists": 0.1414,
                "shots_on_target": 0.723,
                "big_chances_created": 0.2669,
                "xgot": 0.007,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532
              },
              "params": {
                "market_value_eur": 1400000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9899,
                "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": {
                "interceptions": 0.756,
                "tackles": 1.3673,
                "tackles_won": 0.865,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8975,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.6142,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5929,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2553,
                "assist_rate": 0.2553,
                "expected_goals": 0.0643,
                "expected_assists": 0.1414,
                "shots_on_target": 0.7311,
                "big_chances_created": 0.2669,
                "xgot": 0.007,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532
              },
              "params": {
                "blend_weight": 0.0433,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9108,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.5429,
                  "after": 1.6142
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.7284,
                  "after": 0.756
                },
                {
                  "stat": "totalShots",
                  "before": 0.8763,
                  "after": 0.8975
                },
                {
                  "stat": "wonTackle",
                  "before": 0.8836,
                  "after": 0.865
                },
                {
                  "stat": "goalAssist",
                  "before": 0.2669,
                  "after": 0.2553
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.723,
                  "after": 0.7311
                },
                {
                  "stat": "fouls",
                  "before": 0.5991,
                  "after": 0.5929
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.756,
                "tackles": 1.3673,
                "tackles_won": 0.865,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8975,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.6142,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5929,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2553,
                "assist_rate": 0.2553,
                "expected_goals": 0.0643,
                "expected_assists": 0.1414,
                "shots_on_target": 0.7311,
                "big_chances_created": 0.2669,
                "xgot": 0.007,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532
              },
              "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.756,
                "tackles": 1.3673,
                "tackles_won": 0.865,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8975,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.6142,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5929,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2553,
                "assist_rate": 0.2553,
                "expected_goals": 0.0643,
                "expected_assists": 0.1414,
                "shots_on_target": 0.7311,
                "big_chances_created": 0.2669,
                "xgot": 0.007,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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": "Charalampos Kostoulas",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "interceptions": 0.756,
                "tackles": 1.3673,
                "tackles_won": 0.865,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8975,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.6142,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5929,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2553,
                "assists": 0,
                "expected_goals": 0.0714,
                "expected_assists": 0.1571,
                "shots_on_target": 0.7311,
                "big_chances_created": 0.2669,
                "xgot": 0.0078,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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": 1.25
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0643,
                  "after": 0.0714
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1414,
                  "after": 0.1571
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 13 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "interceptions": 0.756,
                "tackles": 1.3673,
                "tackles_won": 0.865,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8975,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.6142,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5929,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2553,
                "assists": 0,
                "expected_goals": 0.0714,
                "expected_assists": 0.1571,
                "shots_on_target": 0.7311,
                "big_chances_created": 0.2669,
                "xgot": 0.0078,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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": 1.25,
                "fifa_overall": 78.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": 1428,
                "fifa_rank": 1083.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": {
                "interceptions": 0.756,
                "tackles": 1.3673,
                "tackles_won": 0.865,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8975,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.6142,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5929,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2553,
                "assists": 0,
                "expected_goals": 0.0714,
                "expected_assists": 0.1571,
                "shots_on_target": 0.7311,
                "big_chances_created": 0.2669,
                "xgot": 0.0078,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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.0689,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0689,
                "scorer_weight": 0.0571,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0449,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.756,
                "tackles": 1.3673,
                "tackles_won": 0.865,
                "clearances": 2.9052,
                "aerial_won": 0.8298,
                "total_shots": 0.8975,
                "rating": 6.6988,
                "minutes": 81.97,
                "total_pass": 28.3749,
                "accurate_pass": 23.6435,
                "duels_won": 1.4573,
                "total_long_balls": 2.6893,
                "accurate_long_balls": 2.1191,
                "total_own_half_passes": 14.4652,
                "accurate_own_half_passes": 13.2259,
                "total_opp_half_passes": 13.9097,
                "accurate_opp_half_passes": 10.4176,
                "crosses_total": 1.6142,
                "crosses_accurate": 0.1639,
                "touches": 41.0563,
                "possession_lost": 7.97,
                "dispossessed": 0.0,
                "duels_lost": 3.009,
                "aerial_lost": 1.4446,
                "total_contest": 0.4715,
                "won_contest": 0.1393,
                "ball_recovery": 2.9458,
                "challenges_lost": 0.6331,
                "fouls": 0.5929,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2553,
                "assists": 1,
                "expected_goals": 0.0714,
                "expected_assists": 0.1571,
                "shots_on_target": 0.7311,
                "big_chances_created": 0.2669,
                "xgot": 0.0078,
                "ball_carries": 9.4337,
                "total_progression": 36.7865,
                "progressive_carries": 0.9999,
                "key_pass": 0.4308,
                "shots_off_target": 0.1532,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.76,
                "opponent_faced": "Charalampos Kostoulas",
                "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.0689,
                "projected_assists": 1,
                "assist_probability": 0.1454,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.1454,
                "provider_weight": 0.1964,
                "squad_weight_total": 1.0119,
                "weight_share": 0.1941,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Noah Sadiki": {
          "player_id": 1171539,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 27,
          "height": 173,
          "market_value": 37000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0718,
            "assist_rate": 0.0763,
            "assists": 0,
            "expected_goals": 0.0989,
            "goal_rate": 0.072,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8016,
            "minutes": 83,
            "total_pass": 34,
            "accurate_pass": 30,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 17,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 47,
            "possession_lost": 7.2015,
            "dispossessed": 0.7011,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.053,
            "ball_carries": 13,
            "total_progression": 35,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9743,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.402,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Diego Gómez",
            "opponent_faced": "Diego Gómez",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0942,
            "projected_assists": 0,
            "assist_probability": 0.0693,
            "finishing_factor": 0.8777,
            "creation_factor": 1.1021,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 68,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0367,
                "expected_assists": 0.0074,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 25,
                "interceptions": 1,
                "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0383,
                "expected_assists": 0.0047,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 20,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 4,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 74,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2784,
                "expected_assists": 0.1838,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 36,
                "accurate_pass": 34,
                "key_pass": 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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0239,
                "expected_assists": 0.0228,
                "total_shots": 1,
                "total_pass": 41,
                "accurate_pass": 37,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 3,
                "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"
            },
            {
              "match_id": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0571,
                "expected_assists": 0.0261,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 57,
                "accurate_pass": 51,
                "key_pass": 2,
                "aerial_won": 1,
                "duels_won": 8,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0248,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 31,
                "key_pass": 2,
                "clearances": 2,
                "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 77,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0099,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 24,
                "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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4327,
                "expected_assists": 0.021,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 39,
                "accurate_pass": 34,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 9
              },
              "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 72,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0331,
                "expected_assists": 0.0635,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 22,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0956,
                "expected_assists": 0.2562,
                "total_shots": 1,
                "total_pass": 43,
                "accurate_pass": 37,
                "key_pass": 1,
                "aerial_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1166,
            "combined_rank_score": 516.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 696.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8016,
            "source_file": "data/player_rankings.csv",
            "player_name": "Noah Sadiki",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Kingsley Sarfo",
                  "ranking": 1167
                },
                {
                  "player_name": "Pablo Parra",
                  "ranking": 1168
                },
                {
                  "player_name": "Yaya Dukuly",
                  "ranking": 1169
                },
                {
                  "player_name": "Rustam Turdimurodov",
                  "ranking": 1170
                },
                {
                  "player_name": "Gabriel Santos",
                  "ranking": 1171
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 38,
          "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": 38,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.009,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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": 50.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 38 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Sunderland, 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.8039,
                "expected_assists": 0.064,
                "assists": 0.0764,
                "assist_rate": 0.0764,
                "expected_goals": 0.0904,
                "goals": 0.074,
                "goal_rate": 0.074,
                "shots_on_target": 0.3351,
                "total_shots": 1.0245,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.1215,
                "accurate_pass": 29.7577,
                "duels_won": 3.5797,
                "total_long_balls": 2.2066,
                "accurate_long_balls": 1.2302,
                "total_own_half_passes": 14.6966,
                "accurate_own_half_passes": 12.9476,
                "total_opp_half_passes": 19.4249,
                "accurate_opp_half_passes": 16.8101,
                "crosses_total": 0.4787,
                "crosses_accurate": 0.176,
                "touches": 46.1288,
                "possession_lost": 7.1373,
                "dispossessed": 0.6948,
                "duels_lost": 2.7405,
                "aerial_won": 0.4759,
                "aerial_lost": 0.3972,
                "interceptions": 0.6274,
                "tackles_won": 0.7601,
                "tackles": 1.0987,
                "clearances": 1.2495,
                "total_contest": 1.0067,
                "won_contest": 0.6849,
                "challenges_lost": 0.5241,
                "fouls": 0.8109,
                "fouls_drawn": 1.3383,
                "blocks": 0.2236,
                "big_chances_created": 0.1103,
                "big_chances_missed": 0.2477,
                "xgot": 0.0486,
                "ball_carries": 13.2052,
                "total_progression": 34.7867,
                "progressive_carries": 1.0097,
                "shots_off_target": 0.6894
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.1054,
                  "creative_index": 0.2897,
                  "expectedGoals": 0.0862,
                  "expectedAssists": 0.0468,
                  "onTargetScoringAttempt": 0.3954
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8039050102233887,
                    "model_output": 0.8039,
                    "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.1081
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0876
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0688
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0297
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0231
                        }
                      ],
                      "others": -0.0274,
                      "total": 0.8039,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115128
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.092265
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.078962
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.036094
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.02821
                        }
                      ],
                      "others_margin": -0.033475
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06403225660324097,
                    "model_output": 0.064,
                    "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.0136
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0092
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0043
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0033
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0073,
                      "total": 0.064,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.172949
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.120279
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.054591
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.044089
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.034442
                        }
                      ],
                      "others_margin": -0.106529
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07637929171323776,
                    "model_output": 0.0764,
                    "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.0102
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0071
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0067
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0047
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0008,
                      "total": 0.0764,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.126987
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.090677
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.084516
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.060154
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.037082
                        }
                      ],
                      "others_margin": -0.011884
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09044675529003143,
                    "model_output": 0.0904,
                    "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": "expectedGoals",
                          "contribution": -0.0079
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0065
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0049
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0046
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.0904,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.141259
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.075237
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.066763
                        },
                        {
                          "name": "goals",
                          "margin": -0.053562
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.049707
                        }
                      ],
                      "others_margin": -0.03848
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07400649785995483,
                    "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": "opp_half_pass_pct",
                          "contribution": -0.0128
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0076
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0076
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0049
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.0096,
                      "total": 0.074,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.140562
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.085962
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.085903
                        },
                        {
                          "name": "goals",
                          "margin": -0.059967
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.04574
                        }
                      ],
                      "others_margin": -0.122459
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.335074245929718,
                    "model_output": 0.3351,
                    "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.0468
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0511
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0199
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0168
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0081
                        }
                      ],
                      "others": -0.042,
                      "total": 0.3351,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.134843
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.129002
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.048288
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.042622
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.021151
                        }
                      ],
                      "others_margin": -0.118147
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0244582891464233,
                    "model_output": 1.0245,
                    "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.1483
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0509
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0435
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.04
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.016
                        }
                      ],
                      "others": -0.0657,
                      "total": 1.0245,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.148282
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.050876
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.043479
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.039958
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.016039
                        }
                      ],
                      "others_margin": -0.065689
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.801568031311035,
                    "model_output": 6.8016,
                    "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.0278
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0266
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0229
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0208
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0203
                        }
                      ],
                      "others": -0.0377,
                      "total": 6.8016,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.027756
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.026565
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.022913
                        },
                        {
                          "name": "rating",
                          "margin": -0.020762
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.020251
                        }
                      ],
                      "others_margin": -0.037698
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "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.0090, quality 0.764)",
              "stats": {
                "key_pass": 0.8111,
                "expected_assists": 0.0646,
                "assists": 0.0771,
                "assist_rate": 0.0771,
                "expected_goals": 0.0913,
                "goals": 0.0747,
                "goal_rate": 0.0747,
                "shots_on_target": 0.3381,
                "total_shots": 1.0337,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.483,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.4802,
                "aerial_lost": 0.4008,
                "interceptions": 0.633,
                "tackles_won": 0.7669,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8182,
                "fouls_drawn": 1.3503,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2499,
                "xgot": 0.049,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6956
              },
              "params": {
                "market_value_eur": 37000000,
                "quality_factor": 0.7641,
                "boost_factor": 1.009,
                "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": {
                "key_pass": 0.8111,
                "expected_assists": 0.0646,
                "assists": 0.0763,
                "assist_rate": 0.0763,
                "expected_goals": 0.0913,
                "goals": 0.0739,
                "goal_rate": 0.0739,
                "shots_on_target": 0.3394,
                "total_shots": 1.0326,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.4875,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.4802,
                "aerial_lost": 0.4008,
                "interceptions": 0.636,
                "tackles_won": 0.7732,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8146,
                "fouls_drawn": 1.3554,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2499,
                "xgot": 0.049,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6956
              },
              "params": {
                "blend_weight": 0.0101,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9267,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.7669,
                  "after": 0.7732
                },
                {
                  "stat": "wasFouled",
                  "before": 1.3503,
                  "after": 1.3554
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8111,
                "expected_assists": 0.0646,
                "assists": 0.0763,
                "assist_rate": 0.0763,
                "expected_goals": 0.0913,
                "goals": 0.0739,
                "goal_rate": 0.0739,
                "shots_on_target": 0.3394,
                "total_shots": 1.035,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.4875,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.4802,
                "aerial_lost": 0.4008,
                "interceptions": 0.636,
                "tackles_won": 0.7732,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8146,
                "fouls_drawn": 1.3554,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2499,
                "xgot": 0.049,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6956
              },
              "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.8111,
                "expected_assists": 0.0646,
                "assists": 0.0763,
                "assist_rate": 0.0763,
                "expected_goals": 0.089,
                "goals": 0.072,
                "goal_rate": 0.072,
                "shots_on_target": 0.3307,
                "total_shots": 1.0084,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.4875,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.9,
                "aerial_lost": 0.4008,
                "interceptions": 0.636,
                "tackles_won": 0.7732,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8146,
                "fouls_drawn": 1.3554,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2435,
                "xgot": 0.0477,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6777,
                "duel_xg_multiplier": 0.9743,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.402,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Diego Gómez",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.402,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9743,
                  "skill_edge": 0.0305,
                  "height_edge": -0.048,
                  "attacker_skill": 0.7981,
                  "defender_skill": 0.7304,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Diego Gómez",
                      "market_value": 27000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7304
                    }
                  ],
                  "xg_override": 0.089
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.4802,
                  "after": 0.9
                },
                {
                  "stat": "totalShots",
                  "before": 1.035,
                  "after": 1.0084
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.6956,
                  "after": 0.6777
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3394,
                  "after": 0.3307
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2499,
                  "after": 0.2435
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "key_pass": 0.8111,
                "expected_assists": 0.0718,
                "assist_rate": 0.0763,
                "assists": 0,
                "expected_goals": 0.0989,
                "goal_rate": 0.072,
                "goals": 0,
                "shots_on_target": 0.3307,
                "total_shots": 1.0084,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.4875,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.9,
                "aerial_lost": 0.4008,
                "interceptions": 0.636,
                "tackles_won": 0.7732,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8146,
                "fouls_drawn": 1.3554,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2435,
                "xgot": 0.053,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6777,
                "duel_xg_multiplier": 0.9743,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.402,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8777,
                "creation_factor": 1.1021
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.089,
                  "after": 0.0989
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0646,
                  "after": 0.0718
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 7 by projected rating, fifa_overall 80.0; not used by the projection)",
              "stats": {
                "key_pass": 0.8111,
                "expected_assists": 0.0718,
                "assist_rate": 0.0763,
                "assists": 0,
                "expected_goals": 0.0989,
                "goal_rate": 0.072,
                "goals": 0,
                "shots_on_target": 0.3307,
                "total_shots": 1.0084,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.4875,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.9,
                "aerial_lost": 0.4008,
                "interceptions": 0.636,
                "tackles_won": 0.7732,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8146,
                "fouls_drawn": 1.3554,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2435,
                "xgot": 0.053,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6777,
                "duel_xg_multiplier": 0.9743,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.402,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8777,
                "creation_factor": 1.1021,
                "fifa_overall": 80.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": 1166,
                "fifa_rank": 696.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": {
                "key_pass": 0.8111,
                "expected_assists": 0.0718,
                "assist_rate": 0.0763,
                "assists": 0,
                "expected_goals": 0.0989,
                "goal_rate": 0.072,
                "goals": 0,
                "shots_on_target": 0.3307,
                "total_shots": 1.0084,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.4875,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.9,
                "aerial_lost": 0.4008,
                "interceptions": 0.636,
                "tackles_won": 0.7732,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8146,
                "fouls_drawn": 1.3554,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2435,
                "xgot": 0.053,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6777,
                "duel_xg_multiplier": 0.9743,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.402,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0942,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8777,
                "creation_factor": 1.1021,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0942,
                "scorer_weight": 0.0868,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0683,
                "finishing_factor": 0.8777,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.8111,
                "expected_assists": 0.0718,
                "assist_rate": 0.0763,
                "assists": 0,
                "expected_goals": 0.0989,
                "goal_rate": 0.072,
                "goals": 0,
                "shots_on_target": 0.3307,
                "total_shots": 1.0084,
                "rating": 6.8016,
                "minutes": 83.4,
                "total_pass": 34.4286,
                "accurate_pass": 30.0255,
                "duels_won": 3.6119,
                "total_long_balls": 2.2265,
                "accurate_long_balls": 1.2413,
                "total_own_half_passes": 14.8289,
                "accurate_own_half_passes": 13.0641,
                "total_opp_half_passes": 19.5997,
                "accurate_opp_half_passes": 16.9614,
                "crosses_total": 0.4875,
                "crosses_accurate": 0.1776,
                "touches": 46.544,
                "possession_lost": 7.2015,
                "dispossessed": 0.7011,
                "duels_lost": 2.7652,
                "aerial_won": 0.9,
                "aerial_lost": 0.4008,
                "interceptions": 0.636,
                "tackles_won": 0.7732,
                "tackles": 1.1086,
                "clearances": 1.2607,
                "total_contest": 1.0158,
                "won_contest": 0.6911,
                "challenges_lost": 0.5288,
                "fouls": 0.8146,
                "fouls_drawn": 1.3554,
                "blocks": 0.2256,
                "big_chances_created": 0.1113,
                "big_chances_missed": 0.2435,
                "xgot": 0.053,
                "ball_carries": 13.324,
                "total_progression": 35.0998,
                "progressive_carries": 1.0188,
                "shots_off_target": 0.6777,
                "duel_xg_multiplier": 0.9743,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.402,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Diego Gómez",
                "opponent_faced": "Diego Gómez",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0942,
                "projected_assists": 0,
                "assist_probability": 0.0693,
                "finishing_factor": 0.8777,
                "creation_factor": 1.1021,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0693,
                "provider_weight": 0.0791,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0782,
                "creation_factor": 1.1021,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Granit Xhaka": {
          "player_id": 117777,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 34,
          "height": 185,
          "market_value": 8500000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.197,
            "assist_rate": 0.1114,
            "assists": 0,
            "expected_goals": 0.0393,
            "goal_rate": 0.0348,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.3139,
            "minutes": 90,
            "total_pass": 59,
            "accurate_pass": 51,
            "duels_won": 5,
            "total_long_balls": 9,
            "accurate_long_balls": 6,
            "total_own_half_passes": 24,
            "accurate_own_half_passes": 23,
            "total_opp_half_passes": 35,
            "accurate_opp_half_passes": 28,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 74,
            "possession_lost": 13.6891,
            "dispossessed": 0.8914,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 1,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0028,
            "ball_carries": 18,
            "total_progression": 63,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9409,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.2,
            "crosses_attempted": 2.0,
            "duel_win_rate": 0.44,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Olivier Boscagli",
            "opponent_faced": "Olivier Boscagli",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0385,
            "projected_assists": 0,
            "assist_probability": 0.1788,
            "finishing_factor": 0.993,
            "creation_factor": 0.8,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3836,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 44,
                "key_pass": 3,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 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"
            },
            {
              "match_id": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3704,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 49,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0594,
                "expected_assists": 0.1191,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 56,
                "accurate_pass": 39,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3557,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 54,
                "key_pass": 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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0913,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 70,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2747,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 45,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0208,
                "total_shots": 0,
                "total_pass": 71,
                "accurate_pass": 62,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 4,
                "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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 8.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0266,
                "expected_assists": 0.2702,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 85,
                "accurate_pass": 71,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 11
              },
              "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.078,
                "expected_assists": 0.258,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 45,
                "key_pass": 3,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 9
              },
              "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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.057,
                "expected_assists": 0.4002,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 74,
                "accurate_pass": 67,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 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": 71,
            "combined_rank_score": 82.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 30.0,
            "sofascore_rating": 8.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 135.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.3139,
            "source_file": "data/player_rankings.csv",
            "player_name": "Granit Xhaka",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Julián Alvarez",
                  "ranking": 66
                },
                {
                  "player_name": "Jamshid Iskandarov",
                  "ranking": 67
                },
                {
                  "player_name": "Emiliano Martínez",
                  "ranking": 68
                },
                {
                  "player_name": "Cole Palmer",
                  "ranking": 69
                },
                {
                  "player_name": "David Raya",
                  "ranking": 70
                }
              ],
              "lower": [
                {
                  "player_name": "Kevin De Bruyne",
                  "ranking": 72
                },
                {
                  "player_name": "Silva Denisson",
                  "ranking": 73
                },
                {
                  "player_name": "Désiré Doué",
                  "ranking": 74
                },
                {
                  "player_name": "Chema Andrés",
                  "ranking": 75
                },
                {
                  "player_name": "Youri Tielemans",
                  "ranking": 76
                }
              ]
            }
          },
          "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.0,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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, Sunderland, 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": 2.032,
                "expected_assists": 0.1774,
                "assists": 0.1125,
                "assist_rate": 0.1125,
                "expected_goals": 0.0376,
                "goals": 0.0374,
                "goal_rate": 0.0374,
                "shots_on_target": 0.1721,
                "total_shots": 0.7339,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2514,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 0.9277,
                "aerial_lost": 0.9856,
                "interceptions": 1.0018,
                "tackles_won": 1.1969,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.9012,
                "fouls_drawn": 1.5944,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0027,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5618
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 8.8
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.4329,
                  "creative_index": 0.8608,
                  "expectedGoals": 0.0203,
                  "expectedAssists": 0.2271,
                  "onTargetScoringAttempt": 0.0127
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 2.0320348739624023,
                    "model_output": 2.032,
                    "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": "creative_index",
                          "contribution": 0.2305
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1539
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1675
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.1365
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.1102
                        }
                      ],
                      "others": 0.3472,
                      "total": 2.032,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.231224
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.129123
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.123861
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.090654
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.067615
                        }
                      ],
                      "others_margin": 0.187375
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.17743290960788727,
                    "model_output": 0.1774,
                    "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": "expectedAssists",
                          "contribution": 0.0192
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.019
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.015
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0083
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0085
                        }
                      ],
                      "others": 0.0216,
                      "total": 0.1774,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.202189
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.165989
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.113945
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.058137
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.05642
                        }
                      ],
                      "others_margin": 0.130205
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.11245810985565186,
                    "model_output": 0.1125,
                    "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": "keyPass",
                          "contribution": 0.0135
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0121
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0111
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0101
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0108
                        }
                      ],
                      "others": -0.0061,
                      "total": 0.1125,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "keyPass",
                          "margin": 0.147102
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.130771
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.120359
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.098136
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.095747
                        }
                      ],
                      "others_margin": -0.05334
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03759421780705452,
                    "model_output": 0.0376,
                    "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.0326
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0086
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0068
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0055
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0125,
                      "total": 0.0376,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.422983
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.150155
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119451
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.095536
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.085127
                        }
                      ],
                      "others_margin": -0.286639
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.037404999136924744,
                    "model_output": 0.0374,
                    "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.0246
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0159
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0083
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0042
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0038
                        }
                      ],
                      "others": -0.011,
                      "total": 0.0374,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.290178
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.244838
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.157683
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.089851
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.081613
                        }
                      ],
                      "others_margin": -0.258601
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.17211562395095825,
                    "model_output": 0.1721,
                    "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.0786
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0467
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0238
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0201
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0147
                        }
                      ],
                      "others": -0.0156,
                      "total": 0.1721,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.277706
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.211143
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.113264
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.094428
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.075527
                        }
                      ],
                      "others_margin": -0.087009
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7338787913322449,
                    "model_output": 0.7339,
                    "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.2298
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1146
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0872
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0534
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.044
                        }
                      ],
                      "others": -0.1312,
                      "total": 0.7339,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.229788
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114648
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.087192
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.053423
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.043958
                        }
                      ],
                      "others_margin": -0.131256
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.3138957023620605,
                    "model_output": 7.3139,
                    "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.1554
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.108
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0478
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0328
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0298
                        }
                      ],
                      "others": 0.0912,
                      "total": 7.3139,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.155413
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.10801
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.047779
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.03284
                        },
                        {
                          "name": "touches",
                          "margin": 0.029814
                        }
                      ],
                      "others_margin": 0.091168
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "role_matches": 37,
                  "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.0000, quality 0.505)",
              "stats": {
                "key_pass": 2.032,
                "expected_assists": 0.1774,
                "assists": 0.1125,
                "assist_rate": 0.1125,
                "expected_goals": 0.0376,
                "goals": 0.0374,
                "goal_rate": 0.0374,
                "shots_on_target": 0.1721,
                "total_shots": 0.7339,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2514,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 0.9277,
                "aerial_lost": 0.9856,
                "interceptions": 1.0018,
                "tackles_won": 1.1969,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.9012,
                "fouls_drawn": 1.5944,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0027,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5618
              },
              "params": {
                "market_value_eur": 8500000,
                "quality_factor": 0.5047,
                "boost_factor": 1.0,
                "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": 2.032,
                "expected_assists": 0.1774,
                "assists": 0.1114,
                "assist_rate": 0.1114,
                "expected_goals": 0.0376,
                "goals": 0.037,
                "goal_rate": 0.037,
                "shots_on_target": 0.1704,
                "total_shots": 0.7267,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2634,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 0.9277,
                "aerial_lost": 0.9856,
                "interceptions": 1.0017,
                "tackles_won": 1.19,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.8972,
                "fouls_drawn": 1.613,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0027,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5618
              },
              "params": {
                "blend_weight": 0.0098,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9947,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.5944,
                  "after": 1.613
                },
                {
                  "stat": "totalCross",
                  "before": 4.2514,
                  "after": 4.2634
                },
                {
                  "stat": "totalShots",
                  "before": 0.7339,
                  "after": 0.7267
                },
                {
                  "stat": "wonTackle",
                  "before": 1.1969,
                  "after": 1.19
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 2.032,
                "expected_assists": 0.1774,
                "assists": 0.1114,
                "assist_rate": 0.1114,
                "expected_goals": 0.0376,
                "goals": 0.037,
                "goal_rate": 0.037,
                "shots_on_target": 0.1704,
                "total_shots": 0.7322,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2634,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 0.9277,
                "aerial_lost": 0.9856,
                "interceptions": 1.0017,
                "tackles_won": 1.19,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.8972,
                "fouls_drawn": 1.613,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0027,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5618
              },
              "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": 2.032,
                "expected_assists": 0.1774,
                "assists": 0.1114,
                "assist_rate": 0.1114,
                "expected_goals": 0.0354,
                "goals": 0.0348,
                "goal_rate": 0.0348,
                "shots_on_target": 0.1603,
                "total_shots": 0.6889,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2634,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 1.2,
                "aerial_lost": 0.9856,
                "interceptions": 1.0017,
                "tackles_won": 1.19,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.8972,
                "fouls_drawn": 1.613,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0025,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5286,
                "duel_xg_multiplier": 0.9409,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 2.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Olivier Boscagli",
                "opponent_faced": "Olivier Boscagli",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Olivier Boscagli",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                  "duel_win_rate": 0.44,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9409,
                  "skill_edge": -0.0562,
                  "height_edge": 0.016,
                  "attacker_skill": 0.5047,
                  "defender_skill": 0.6297,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Olivier Boscagli",
                      "market_value": 13900000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.6297
                    }
                  ],
                  "xg_override": 0.0354
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.9277,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 0.7322,
                  "after": 0.6889
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.5618,
                  "after": 0.5286
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1704,
                  "after": 0.1603
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "key_pass": 2.032,
                "expected_assists": 0.197,
                "assist_rate": 0.1114,
                "assists": 0,
                "expected_goals": 0.0393,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.1603,
                "total_shots": 0.6889,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2634,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 1.2,
                "aerial_lost": 0.9856,
                "interceptions": 1.0017,
                "tackles_won": 1.19,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.8972,
                "fouls_drawn": 1.613,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0028,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5286,
                "duel_xg_multiplier": 0.9409,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 2.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Olivier Boscagli",
                "opponent_faced": "Olivier Boscagli",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.993,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.1774,
                  "after": 0.197
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 1 by projected rating, fifa_overall 85.0; not used by the projection)",
              "stats": {
                "key_pass": 2.032,
                "expected_assists": 0.197,
                "assist_rate": 0.1114,
                "assists": 0,
                "expected_goals": 0.0393,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.1603,
                "total_shots": 0.6889,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2634,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 1.2,
                "aerial_lost": 0.9856,
                "interceptions": 1.0017,
                "tackles_won": 1.19,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.8972,
                "fouls_drawn": 1.613,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0028,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5286,
                "duel_xg_multiplier": 0.9409,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 2.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Olivier Boscagli",
                "opponent_faced": "Olivier Boscagli",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.993,
                "creation_factor": 0.8,
                "fifa_overall": 85.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": 71,
                "fifa_rank": 135.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 85.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 2.032,
                "expected_assists": 0.197,
                "assist_rate": 0.1114,
                "assists": 0,
                "expected_goals": 0.0393,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.1603,
                "total_shots": 0.6889,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2634,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 1.2,
                "aerial_lost": 0.9856,
                "interceptions": 1.0017,
                "tackles_won": 1.19,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.8972,
                "fouls_drawn": 1.613,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0028,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5286,
                "duel_xg_multiplier": 0.9409,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 2.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Olivier Boscagli",
                "opponent_faced": "Olivier Boscagli",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0385,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.993,
                "creation_factor": 0.8,
                "fifa_overall": 85.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0385,
                "scorer_weight": 0.039,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0307,
                "finishing_factor": 0.993,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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": 2.032,
                "expected_assists": 0.197,
                "assist_rate": 0.1114,
                "assists": 0,
                "expected_goals": 0.0393,
                "goal_rate": 0.0348,
                "goals": 0,
                "shots_on_target": 0.1603,
                "total_shots": 0.6889,
                "rating": 7.3139,
                "minutes": 89.52,
                "total_pass": 59.0472,
                "accurate_pass": 50.7076,
                "duels_won": 4.791,
                "total_long_balls": 9.1772,
                "accurate_long_balls": 6.0804,
                "total_own_half_passes": 24.2464,
                "accurate_own_half_passes": 22.7056,
                "total_opp_half_passes": 34.8008,
                "accurate_opp_half_passes": 28.002,
                "crosses_total": 4.2634,
                "crosses_accurate": 0.8772,
                "touches": 74.3722,
                "possession_lost": 13.6891,
                "dispossessed": 0.8914,
                "duels_lost": 3.4821,
                "aerial_won": 1.2,
                "aerial_lost": 0.9856,
                "interceptions": 1.0017,
                "tackles_won": 1.19,
                "tackles": 1.6315,
                "clearances": 1.1143,
                "total_contest": 1.0536,
                "won_contest": 0.6825,
                "challenges_lost": 0.3366,
                "fouls": 0.8972,
                "fouls_drawn": 1.613,
                "blocks": 0.5599,
                "big_chances_created": 0.7209,
                "big_chances_missed": 0.0,
                "xgot": 0.0028,
                "ball_carries": 17.7099,
                "total_progression": 62.9306,
                "progressive_carries": 0.9075,
                "shots_off_target": 0.5286,
                "duel_xg_multiplier": 0.9409,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.2,
                "crosses_attempted": 2.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Olivier Boscagli",
                "opponent_faced": "Olivier Boscagli",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0385,
                "projected_assists": 0,
                "assist_probability": 0.1788,
                "finishing_factor": 0.993,
                "creation_factor": 0.8,
                "fifa_overall": 85.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1788,
                "provider_weight": 0.1576,
                "squad_weight_total": 1.0119,
                "weight_share": 0.1558,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Anthony Patterson": {
          "player_id": 958718,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 188,
          "market_value": 7800000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0257,
            "rating": 6.8,
            "minutes": 5,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0154,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1285,
            "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.119,
            "bench_expected_minutes": 4.63,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "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": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 5078,
            "combined_rank_score": 3269.0,
            "ranking_source": "fifa_csv",
            "ranking_status": "missing_sofascore_player_rating",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3269.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "ranking_match": "name",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Anthony Patterson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Hiroki Sakai",
                  "ranking": 5073
                },
                {
                  "player_name": "Clemens Riedel",
                  "ranking": 5074
                },
                {
                  "player_name": "Martín Sarrafiore",
                  "ranking": 5075
                },
                {
                  "player_name": "Juan Manuel Cuesta",
                  "ranking": 5076
                },
                {
                  "player_name": "Sebastián Guzmán",
                  "ranking": 5077
                }
              ],
              "lower": [
                {
                  "player_name": "Miguel Rubio",
                  "ranking": 5079
                },
                {
                  "player_name": "Souza",
                  "ranking": 5080
                },
                {
                  "player_name": "Marko Janković",
                  "ranking": 5081
                },
                {
                  "player_name": "José Córdoba",
                  "ranking": 5082
                },
                {
                  "player_name": "Jeyland Mitchell",
                  "ranking": 5083
                }
              ]
            }
          },
          "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": 4.62527948921528,
            "bench_appearance_prob": 0.1193308858734218,
            "market_value_adjustment": 0.4963,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€7,800,000) scaled to 4.6 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.50)",
              "stats": {
                "saves": 3.0,
                "goals_prevented": 0.5,
                "rating": 6.8,
                "minutes": 90.0,
                "total_pass": 27.0,
                "accurate_pass": 20.0,
                "total_long_balls": 9.0,
                "accurate_long_balls": 4.0,
                "touches": 32.0,
                "clearances": 1.0,
                "ball_recovery": 1.2,
                "high_claims": 0.6,
                "punches": 0.3,
                "aerial_won": 0.7,
                "sweeper_actions": 1.2,
                "sweeper_accurate": 0.8,
                "saves_inside_box": 1.2,
                "possession_lost": 2.5,
                "duels_won": 0.4,
                "duels_lost": 0.2,
                "total_contest": 0.4,
                "won_contest": 0.2,
                "fouls": 0.2,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.0,
                "accurate_own_half_passes": 17.0
              },
              "params": {
                "market_value_eur": 7800000,
                "quality_factor": 0.4963
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 4.6 expected minutes (appearance prob 0.12)",
              "stats": {
                "saves": 0.1542,
                "goals_prevented": 0.0257,
                "rating": 6.8,
                "minutes": 4.63,
                "total_pass": 1.3876,
                "accurate_pass": 1.0278,
                "total_long_balls": 0.4625,
                "accurate_long_balls": 0.2056,
                "touches": 1.6445,
                "clearances": 0.0514,
                "ball_recovery": 0.0617,
                "high_claims": 0.0308,
                "punches": 0.0154,
                "aerial_won": 0.036,
                "sweeper_actions": 0.0617,
                "sweeper_accurate": 0.0411,
                "saves_inside_box": 0.0617,
                "possession_lost": 0.1285,
                "duels_won": 0.0206,
                "duels_lost": 0.0103,
                "total_contest": 0.0206,
                "won_contest": 0.0103,
                "fouls": 0.0103,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1306,
                "accurate_own_half_passes": 0.8737,
                "bench_appearance_probability": 0.119,
                "bench_expected_minutes": 4.63
              },
              "params": {
                "expected_minutes": 4.63,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0514,
                "appearance_probability": 0.119
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1542,
                "goals_prevented": 0.0257,
                "rating": 6.8,
                "minutes": 4.63,
                "total_pass": 1.3876,
                "accurate_pass": 1.0278,
                "total_long_balls": 0.4625,
                "accurate_long_balls": 0.2056,
                "touches": 1.6445,
                "clearances": 0.0514,
                "ball_recovery": 0.0617,
                "high_claims": 0.0308,
                "punches": 0.0154,
                "aerial_won": 0.036,
                "sweeper_actions": 0.0617,
                "sweeper_accurate": 0.0411,
                "saves_inside_box": 0.0617,
                "possession_lost": 0.1285,
                "duels_won": 0.0206,
                "duels_lost": 0.0103,
                "total_contest": 0.0206,
                "won_contest": 0.0103,
                "fouls": 0.0103,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1306,
                "accurate_own_half_passes": 0.8737,
                "bench_appearance_probability": 0.119,
                "bench_expected_minutes": 4.63
              },
              "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.1542,
                "goals_prevented": 0.0257,
                "rating": 6.8,
                "minutes": 4.63,
                "total_pass": 1.3876,
                "accurate_pass": 1.0278,
                "total_long_balls": 0.4625,
                "accurate_long_balls": 0.2056,
                "touches": 1.6445,
                "clearances": 0.0514,
                "ball_recovery": 0.0617,
                "high_claims": 0.0308,
                "punches": 0.0154,
                "aerial_won": 0.036,
                "sweeper_actions": 0.0617,
                "sweeper_accurate": 0.0411,
                "saves_inside_box": 0.0617,
                "possession_lost": 0.1285,
                "duels_won": 0.0206,
                "duels_lost": 0.0103,
                "total_contest": 0.0206,
                "won_contest": 0.0103,
                "fouls": 0.0103,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1306,
                "accurate_own_half_passes": 0.8737,
                "bench_appearance_probability": 0.119,
                "bench_expected_minutes": 4.63,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.119,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 8 by projected rating, fifa_overall 73.0; not used by the projection)",
              "stats": {
                "saves": 0.1542,
                "goals_prevented": 0.0257,
                "rating": 6.8,
                "minutes": 4.63,
                "total_pass": 1.3876,
                "accurate_pass": 1.0278,
                "total_long_balls": 0.4625,
                "accurate_long_balls": 0.2056,
                "touches": 1.6445,
                "clearances": 0.0514,
                "ball_recovery": 0.0617,
                "high_claims": 0.0308,
                "punches": 0.0154,
                "aerial_won": 0.036,
                "sweeper_actions": 0.0617,
                "sweeper_accurate": 0.0411,
                "saves_inside_box": 0.0617,
                "possession_lost": 0.1285,
                "duels_won": 0.0206,
                "duels_lost": 0.0103,
                "total_contest": 0.0206,
                "won_contest": 0.0103,
                "fouls": 0.0103,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.1306,
                "accurate_own_half_passes": 0.8737,
                "bench_appearance_probability": 0.119,
                "bench_expected_minutes": 4.63,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 73.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "fifa_csv",
                "ranking_status": "missing_sofascore_player_rating",
                "global_player_rank": 5078,
                "fifa_rank": 3269.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "name",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Daniel Ballard": {
          "player_id": 958878,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 5,
          "height": 187,
          "market_value": 22000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7545,
            "minutes": 14,
            "total_pass": 8,
            "accurate_pass": 6,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 1.4729,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "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.0287,
            "expected_assists": 0.0009,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 23,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.234,
            "bench_expected_minutes": 14.42,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "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": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1416,
                "expected_assists": 0.001,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 26,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 6,
                "duels_won": 12,
                "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0843,
                "expected_assists": 0.0138,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 37,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 6,
                "duels_won": 9,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0572,
                "expected_assists": 0.1403,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 7,
                "aerial_won": 6,
                "duels_won": 11,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0286,
                "expected_assists": 0.0048,
                "total_shots": 1,
                "total_pass": 44,
                "accurate_pass": 41,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 5,
                "duels_won": 7,
                "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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0054,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 53,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 7,
                "aerial_won": 3,
                "duels_won": 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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 24,
                "rating": 4.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0402,
                "expected_assists": 0.053,
                "total_shots": 1,
                "total_pass": 49,
                "accurate_pass": 39,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 27,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "tackles": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 64,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0469,
                "expected_assists": 0.0044,
                "total_shots": 1,
                "total_pass": 27,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 6,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023982,
              "match_date": "2026-03-03",
              "home_team": "Leeds United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0119,
                "expected_assists": 0.0035,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 13,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 10,
                "aerial_won": 4,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1580,
            "combined_rank_score": 643.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 180.0,
            "sofascore_rating": 7.2333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1106.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7545,
            "source_file": "data/player_rankings.csv",
            "player_name": "Daniel Ballard",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mauricio Vera",
                  "ranking": 1575
                },
                {
                  "player_name": "Jardel",
                  "ranking": 1576
                },
                {
                  "player_name": "Kim Dong-wook",
                  "ranking": 1577
                },
                {
                  "player_name": "Viktor Đukanović",
                  "ranking": 1578
                },
                {
                  "player_name": "Daniel Hall",
                  "ranking": 1579
                }
              ],
              "lower": [
                {
                  "player_name": "Sergio Herrera",
                  "ranking": 1581
                },
                {
                  "player_name": "Maximiliano Romero",
                  "ranking": 1582
                },
                {
                  "player_name": "Lucas Digne",
                  "ranking": 1583
                },
                {
                  "player_name": "Nico Elvedi",
                  "ranking": 1584
                },
                {
                  "player_name": "Augusto Batalla",
                  "ranking": 1585
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 34,
          "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": 34,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.415030018156667,
            "bench_appearance_prob": 0.234,
            "market_value_adjustment": 1.0056,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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 D_service (34 historical appearances) to 14.4 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.4109,
                "tackles": 0.6362,
                "tackles_won": 0.3693,
                "clearances": 1.737,
                "aerial_won": 1.1645,
                "total_shots": 0.3609,
                "rating": 6.7545,
                "minutes": 28.75,
                "total_pass": 15.4251,
                "accurate_pass": 12.7736,
                "duels_won": 4.1869,
                "total_long_balls": 0.7055,
                "accurate_long_balls": 0.1948,
                "total_own_half_passes": 8.4588,
                "accurate_own_half_passes": 7.8056,
                "total_opp_half_passes": 6.9663,
                "accurate_opp_half_passes": 4.968,
                "crosses_total": 0.2696,
                "crosses_accurate": 0.0,
                "touches": 23.2656,
                "possession_lost": 2.9212,
                "dispossessed": 0.0,
                "duels_lost": 2.9136,
                "aerial_lost": 2.4492,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9289,
                "challenges_lost": 0.0,
                "fouls": 0.6052,
                "fouls_drawn": 0.2696,
                "blocks": 0.4104,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0569,
                "expected_assists": 0.0018,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.9189,
                "total_progression": 45.0582,
                "progressive_carries": 1.0811,
                "key_pass": 0.1408,
                "shots_off_target": 0.3609
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1506,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 24.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 4.3
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-03",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 5.8234,
                  "aerialWon": 4.2667,
                  "totalClearance_p90": 6.0251,
                  "totalTackle": 1.6238,
                  "totalPass": 37.855
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.41094622015953064,
                    "model_output": 0.4109,
                    "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.4779
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0174
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0138
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0135
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0103
                        }
                      ],
                      "others": -0.0235,
                      "total": 0.4109,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.815323
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.044868
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.034256
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.032448
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.023899
                        }
                      ],
                      "others_margin": -0.055441
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.6361856460571289,
                    "model_output": 0.6362,
                    "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.7699
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0445
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0198
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0196
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.018
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.6362,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.803687
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.068834
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.029995
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.029819
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.027281
                        }
                      ],
                      "others_margin": -0.022044
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3692726492881775,
                    "model_output": 0.3693,
                    "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.4394
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0152
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0146
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0139
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0127
                        }
                      ],
                      "others": -0.0147,
                      "total": 0.3693,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.722301
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.037293
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.037089
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.036691
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.033762
                        }
                      ],
                      "others_margin": -0.039194
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.7369916439056396,
                    "model_output": 1.737,
                    "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.2011
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2669
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1513
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0813
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0662
                        }
                      ],
                      "others": -0.079,
                      "total": 1.737,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.015357
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.193485
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.095059
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.047551
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.037143
                        }
                      ],
                      "others_margin": -0.04451
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.1644991636276245,
                    "model_output": 1.1645,
                    "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.8299
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.37
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1129
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0925
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.037
                        }
                      ],
                      "others": 0.0,
                      "total": 1.1645,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.917567
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.512934
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.115457
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.085616
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.032315
                        }
                      ],
                      "others_margin": -1.7e-05
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3609392046928406,
                    "model_output": 0.3609,
                    "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.2517
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.128
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0178
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.017
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0135
                        }
                      ],
                      "others": -0.0078,
                      "total": 0.3609,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.251719
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.127994
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.017757
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.016988
                        },
                        {
                          "name": "rating",
                          "margin": -0.013546
                        }
                      ],
                      "others_margin": -0.007666
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.754479885101318,
                    "model_output": 6.7545,
                    "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.0281
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0234
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0221
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0188
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0143
                        }
                      ],
                      "others": -0.0177,
                      "total": 6.7545,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.028069
                        },
                        {
                          "name": "rating",
                          "margin": -0.023405
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.02211
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.018756
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.014287
                        }
                      ],
                      "others_margin": -0.017675
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "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.0056, quality 0.650)",
              "stats": {
                "interceptions": 0.4132,
                "tackles": 0.6397,
                "tackles_won": 0.3713,
                "clearances": 1.7467,
                "aerial_won": 1.171,
                "total_shots": 0.363,
                "rating": 6.7545,
                "minutes": 28.75,
                "total_pass": 15.5115,
                "accurate_pass": 12.8451,
                "duels_won": 4.2103,
                "total_long_balls": 0.7095,
                "accurate_long_balls": 0.1959,
                "total_own_half_passes": 8.5062,
                "accurate_own_half_passes": 7.8493,
                "total_opp_half_passes": 7.0053,
                "accurate_opp_half_passes": 4.9958,
                "crosses_total": 0.2711,
                "crosses_accurate": 0.0,
                "touches": 23.3959,
                "possession_lost": 2.9376,
                "dispossessed": 0.0,
                "duels_lost": 2.9299,
                "aerial_lost": 2.4629,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9341,
                "challenges_lost": 0.0,
                "fouls": 0.6086,
                "fouls_drawn": 0.2711,
                "blocks": 0.4127,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0572,
                "expected_assists": 0.0018,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.9576,
                "total_progression": 45.3105,
                "progressive_carries": 1.0872,
                "key_pass": 0.1416,
                "shots_off_target": 0.3629
              },
              "params": {
                "market_value_eur": 22000000,
                "quality_factor": 0.6503,
                "boost_factor": 1.0056,
                "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.0111)",
              "stats": {
                "interceptions": 0.4104,
                "tackles": 0.6397,
                "tackles_won": 0.3689,
                "clearances": 1.7467,
                "aerial_won": 1.171,
                "total_shots": 0.3607,
                "rating": 6.7545,
                "minutes": 28.75,
                "total_pass": 15.5115,
                "accurate_pass": 12.8451,
                "duels_won": 4.2103,
                "total_long_balls": 0.7095,
                "accurate_long_balls": 0.1959,
                "total_own_half_passes": 8.5062,
                "accurate_own_half_passes": 7.8493,
                "total_opp_half_passes": 7.0053,
                "accurate_opp_half_passes": 4.9958,
                "crosses_total": 0.2681,
                "crosses_accurate": 0.0,
                "touches": 23.3959,
                "possession_lost": 2.9376,
                "dispossessed": 0.0,
                "duels_lost": 2.9299,
                "aerial_lost": 2.4629,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9341,
                "challenges_lost": 0.0,
                "fouls": 0.6072,
                "fouls_drawn": 0.2716,
                "blocks": 0.4127,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0572,
                "expected_assists": 0.0018,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.9576,
                "total_progression": 45.3105,
                "progressive_carries": 1.0872,
                "key_pass": 0.1416,
                "shots_off_target": 0.3629
              },
              "params": {
                "blend_weight": 0.0111,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.3194,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Sunderland"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.8 to 14.4 expected minutes (appearance prob 0.23)",
              "stats": {
                "interceptions": 0.2058,
                "tackles": 0.3207,
                "tackles_won": 0.185,
                "clearances": 0.8758,
                "aerial_won": 0.5871,
                "total_shots": 0.182,
                "rating": 6.7545,
                "minutes": 14.42,
                "total_pass": 7.7773,
                "accurate_pass": 6.4404,
                "duels_won": 2.111,
                "total_long_balls": 0.3557,
                "accurate_long_balls": 0.0982,
                "total_own_half_passes": 4.2649,
                "accurate_own_half_passes": 3.9356,
                "total_opp_half_passes": 3.5124,
                "accurate_opp_half_passes": 2.5049,
                "crosses_total": 0.1344,
                "crosses_accurate": 0.0,
                "touches": 11.7305,
                "possession_lost": 1.4729,
                "dispossessed": 0.0,
                "duels_lost": 1.469,
                "aerial_lost": 2.4629,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4684,
                "challenges_lost": 0.0,
                "fouls": 0.3044,
                "fouls_drawn": 0.1362,
                "blocks": 0.2069,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0287,
                "expected_assists": 0.0009,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4885,
                "total_progression": 22.7183,
                "progressive_carries": 0.5451,
                "key_pass": 0.071,
                "shots_off_target": 0.182,
                "bench_appearance_probability": 0.234,
                "bench_expected_minutes": 14.42
              },
              "params": {
                "expected_minutes": 14.42,
                "projection_minutes": 28.75,
                "minutes_scale": 0.5014,
                "appearance_probability": 0.234
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2058,
                "tackles": 0.3207,
                "tackles_won": 0.185,
                "clearances": 0.8758,
                "aerial_won": 0.5871,
                "total_shots": 0.182,
                "rating": 6.7545,
                "minutes": 14.42,
                "total_pass": 7.7773,
                "accurate_pass": 6.4404,
                "duels_won": 2.111,
                "total_long_balls": 0.3557,
                "accurate_long_balls": 0.0982,
                "total_own_half_passes": 4.2649,
                "accurate_own_half_passes": 3.9356,
                "total_opp_half_passes": 3.5124,
                "accurate_opp_half_passes": 2.5049,
                "crosses_total": 0.1344,
                "crosses_accurate": 0.0,
                "touches": 11.7305,
                "possession_lost": 1.4729,
                "dispossessed": 0.0,
                "duels_lost": 1.469,
                "aerial_lost": 2.4629,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4684,
                "challenges_lost": 0.0,
                "fouls": 0.3044,
                "fouls_drawn": 0.1362,
                "blocks": 0.2069,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0287,
                "expected_assists": 0.0009,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4885,
                "total_progression": 22.7183,
                "progressive_carries": 0.5451,
                "key_pass": 0.071,
                "shots_off_target": 0.182,
                "bench_appearance_probability": 0.234,
                "bench_expected_minutes": 14.42
              },
              "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.2058,
                "tackles": 0.3207,
                "tackles_won": 0.185,
                "clearances": 0.8758,
                "aerial_won": 0.5871,
                "total_shots": 0.182,
                "rating": 6.7545,
                "minutes": 14.42,
                "total_pass": 7.7773,
                "accurate_pass": 6.4404,
                "duels_won": 2.111,
                "total_long_balls": 0.3557,
                "accurate_long_balls": 0.0982,
                "total_own_half_passes": 4.2649,
                "accurate_own_half_passes": 3.9356,
                "total_opp_half_passes": 3.5124,
                "accurate_opp_half_passes": 2.5049,
                "crosses_total": 0.1344,
                "crosses_accurate": 0.0,
                "touches": 11.7305,
                "possession_lost": 1.4729,
                "dispossessed": 0.0,
                "duels_lost": 1.469,
                "aerial_lost": 2.4629,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4684,
                "challenges_lost": 0.0,
                "fouls": 0.3044,
                "fouls_drawn": 0.1362,
                "blocks": 0.2069,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0287,
                "expected_assists": 0.0009,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4885,
                "total_progression": 22.7183,
                "progressive_carries": 0.5451,
                "key_pass": 0.071,
                "shots_off_target": 0.182,
                "bench_appearance_probability": 0.234,
                "bench_expected_minutes": 14.42,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.234,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 9 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "interceptions": 0.2058,
                "tackles": 0.3207,
                "tackles_won": 0.185,
                "clearances": 0.8758,
                "aerial_won": 0.5871,
                "total_shots": 0.182,
                "rating": 6.7545,
                "minutes": 14.42,
                "total_pass": 7.7773,
                "accurate_pass": 6.4404,
                "duels_won": 2.111,
                "total_long_balls": 0.3557,
                "accurate_long_balls": 0.0982,
                "total_own_half_passes": 4.2649,
                "accurate_own_half_passes": 3.9356,
                "total_opp_half_passes": 3.5124,
                "accurate_opp_half_passes": 2.5049,
                "crosses_total": 0.1344,
                "crosses_accurate": 0.0,
                "touches": 11.7305,
                "possession_lost": 1.4729,
                "dispossessed": 0.0,
                "duels_lost": 1.469,
                "aerial_lost": 2.4629,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4684,
                "challenges_lost": 0.0,
                "fouls": 0.3044,
                "fouls_drawn": 0.1362,
                "blocks": 0.2069,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0287,
                "expected_assists": 0.0009,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.4885,
                "total_progression": 22.7183,
                "progressive_carries": 0.5451,
                "key_pass": 0.071,
                "shots_off_target": 0.182,
                "bench_appearance_probability": 0.234,
                "bench_expected_minutes": 14.42,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 78.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1580,
                "fifa_rank": 1106.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Lutsharel Geertruida": {
          "player_id": 856739,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 6,
          "height": 185,
          "market_value": 22000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7082,
            "minutes": 14,
            "total_pass": 8,
            "accurate_pass": 7,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 1.5935,
            "dispossessed": 0.0946,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "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.0264,
            "expected_assists": 0.0225,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0086,
            "ball_carries": 2,
            "total_progression": 1,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.337,
            "bench_expected_minutes": 14.42,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "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": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0266,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 28,
                "tackles": 1,
                "tackles_won": 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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0487,
                "expected_assists": 0.0071,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 52,
                "accurate_pass": 48,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 5,
                "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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2378,
                "expected_assists": 0.0626,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 46,
                "key_pass": 1,
                "interceptions": 2,
                "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": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0328,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 22,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 6,
                "aerial_won": 2,
                "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": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0558,
                "expected_assists": 0.016,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 38,
                "accurate_pass": 33,
                "clearances": 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": 14023982,
              "match_date": "2026-03-03",
              "home_team": "Leeds United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 55,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 14023970,
              "match_date": "2026-02-28",
              "home_team": "Bournemouth",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0062,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 21,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 6,
                "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": 14024011,
              "match_date": "2026-02-22",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 78,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0721,
                "expected_assists": 0.069,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025197,
              "match_date": "2026-02-11",
              "home_team": "Sunderland",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 10,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.079,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "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": 14025158,
              "match_date": "2026-02-07",
              "home_team": "Arsenal",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 19,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0045,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 17,
                "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": 2137,
            "combined_rank_score": 806.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1168.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7082,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lutsharel Geertruida",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nosirzhon Abdusalomov",
                  "ranking": 2132
                },
                {
                  "player_name": "Tomás Ariel Silva",
                  "ranking": 2133
                },
                {
                  "player_name": "Tjay De Barr",
                  "ranking": 2134
                },
                {
                  "player_name": "Aitor Fernández",
                  "ranking": 2135
                },
                {
                  "player_name": "Franco Bechtholdt",
                  "ranking": 2136
                }
              ],
              "lower": [
                {
                  "player_name": "Vlatko Stojanovski",
                  "ranking": 2138
                },
                {
                  "player_name": "Islom Tukhtakhuzhaev",
                  "ranking": 2139
                },
                {
                  "player_name": "Juan Figueroa",
                  "ranking": 2140
                },
                {
                  "player_name": "Kaito Taniguchi",
                  "ranking": 2141
                },
                {
                  "player_name": "Seok-jun Hong",
                  "ranking": 2142
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 28,
          "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": 28,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 14.415030018156667,
            "bench_appearance_prob": 0.3370468190071212,
            "market_value_adjustment": 1.0066,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (28 historical appearances) to 14.4 expected mins (appearance prob 0.34)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3923,
                "tackles": 0.7618,
                "tackles_won": 0.4706,
                "clearances": 0.9563,
                "aerial_won": 0.2892,
                "total_shots": 0.1408,
                "rating": 6.7082,
                "minutes": 24.31,
                "total_pass": 13.9399,
                "accurate_pass": 11.8226,
                "duels_won": 1.4719,
                "total_long_balls": 1.0584,
                "accurate_long_balls": 0.3312,
                "total_own_half_passes": 6.4098,
                "accurate_own_half_passes": 6.0811,
                "total_opp_half_passes": 7.5301,
                "accurate_opp_half_passes": 5.7415,
                "crosses_total": 0.1531,
                "crosses_accurate": 0.1531,
                "touches": 19.0983,
                "possession_lost": 2.6698,
                "dispossessed": 0.094,
                "duels_lost": 0.9308,
                "aerial_lost": 0.3389,
                "total_contest": 0.0932,
                "won_contest": 0.0932,
                "ball_recovery": 1.7359,
                "challenges_lost": 0.26,
                "fouls": 0.2379,
                "fouls_drawn": 0.1106,
                "blocks": 0.0417,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0442,
                "expected_assists": 0.0377,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.1801,
                "xgot": 0.0144,
                "ball_carries": 3.9239,
                "total_progression": 2.2715,
                "progressive_carries": 0.0,
                "key_pass": 0.4439,
                "shots_off_target": 0.0917
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-03",
                    "opponent": "Leeds United",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.0673,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0572,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Fulham",
                    "minutes": 78.0,
                    "is_starting": false,
                    "weight": 0.0486,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-02-11",
                    "opponent": "Liverpool FC",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0413,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-02-07",
                    "opponent": "Arsenal",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0351,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.0,
                  "aerialWon": 0.5208,
                  "totalClearance_p90": 2.1415,
                  "totalTackle": 1.4613,
                  "totalPass": 33.0851
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3922939896583557,
                    "model_output": 0.3923,
                    "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.446
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0115
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0109
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0108
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0109
                        }
                      ],
                      "others": -0.0183,
                      "total": 0.3923,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.734515
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.028309
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.027739
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.027516
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.026988
                        }
                      ],
                      "others_margin": -0.045686
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.7617605924606323,
                    "model_output": 0.7618,
                    "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.7167
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0231
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0158
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0147
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0137
                        }
                      ],
                      "others": 0.0741,
                      "total": 0.7618,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.721986
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.033484
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.022302
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.020755
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.019672
                        }
                      ],
                      "others_margin": 0.102414
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.4706212878227234,
                    "model_output": 0.4706,
                    "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.4171
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0191
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0124
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.012
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0102
                        }
                      ],
                      "others": 0.0284,
                      "total": 0.4706,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.669912
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.042822
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.027516
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.02731
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.023442
                        }
                      ],
                      "others_margin": 0.062185
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.9563068747520447,
                    "model_output": 0.9563,
                    "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.0534
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2175
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0896
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0692
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0631
                        }
                      ],
                      "others": -0.0023,
                      "total": 0.9563,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.90373
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.169087
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.078889
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.065508
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.063761
                        }
                      ],
                      "others_margin": -0.002484
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.28923362493515015,
                    "model_output": 0.2892,
                    "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.8063
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1696
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0371
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0287
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0114
                        }
                      ],
                      "others": -0.0397,
                      "total": 0.2892,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.875649
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.348847
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.095796
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.081068
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.034057
                        }
                      ],
                      "others_margin": -0.128656
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.1407906413078308,
                    "model_output": 0.1408,
                    "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.2646
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.008
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.006
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.006
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0058
                        }
                      ],
                      "others": -0.0519,
                      "total": 0.1408,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.264571
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.007963
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.006013
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.00596
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.005773
                        }
                      ],
                      "others_margin": -0.05198
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.708157062530518,
                    "model_output": 6.7082,
                    "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": "is_starting_11",
                          "contribution": -0.0137
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.011
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0102
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0102
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0093
                        }
                      ],
                      "others": -0.0225,
                      "total": 6.7082,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.013724
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011027
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.010246
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010189
                        },
                        {
                          "name": "rating",
                          "margin": -0.009345
                        }
                      ],
                      "others_margin": -0.022444
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 28,
                  "role_matches": 11,
                  "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.0066, quality 0.650)",
              "stats": {
                "interceptions": 0.3949,
                "tackles": 0.7668,
                "tackles_won": 0.4737,
                "clearances": 0.9626,
                "aerial_won": 0.2911,
                "total_shots": 0.1417,
                "rating": 6.7082,
                "minutes": 24.31,
                "total_pass": 14.0319,
                "accurate_pass": 11.9006,
                "duels_won": 1.4816,
                "total_long_balls": 1.0654,
                "accurate_long_balls": 0.3334,
                "total_own_half_passes": 6.4521,
                "accurate_own_half_passes": 6.1212,
                "total_opp_half_passes": 7.5798,
                "accurate_opp_half_passes": 5.7794,
                "crosses_total": 0.1541,
                "crosses_accurate": 0.1541,
                "touches": 19.2243,
                "possession_lost": 2.6874,
                "dispossessed": 0.0946,
                "duels_lost": 0.9369,
                "aerial_lost": 0.3411,
                "total_contest": 0.0938,
                "won_contest": 0.0938,
                "ball_recovery": 1.7474,
                "challenges_lost": 0.2617,
                "fouls": 0.2395,
                "fouls_drawn": 0.1113,
                "blocks": 0.042,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0445,
                "expected_assists": 0.0379,
                "shots_on_target": 0.0494,
                "big_chances_created": 0.1813,
                "xgot": 0.0145,
                "ball_carries": 3.9498,
                "total_progression": 2.2865,
                "progressive_carries": 0.0,
                "key_pass": 0.4468,
                "shots_off_target": 0.0923
              },
              "params": {
                "market_value_eur": 22000000,
                "quality_factor": 0.6503,
                "boost_factor": 1.0066,
                "reference_quality": 0.505,
                "history_matches": 28,
                "history_shrink": 0.1515,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 24.3 to 14.4 expected minutes (appearance prob 0.34)",
              "stats": {
                "interceptions": 0.2342,
                "tackles": 0.4547,
                "tackles_won": 0.2809,
                "clearances": 0.5708,
                "aerial_won": 0.1726,
                "total_shots": 0.084,
                "rating": 6.7082,
                "minutes": 14.42,
                "total_pass": 8.3205,
                "accurate_pass": 7.0567,
                "duels_won": 0.8785,
                "total_long_balls": 0.6317,
                "accurate_long_balls": 0.1977,
                "total_own_half_passes": 3.8259,
                "accurate_own_half_passes": 3.6297,
                "total_opp_half_passes": 4.4946,
                "accurate_opp_half_passes": 3.427,
                "crosses_total": 0.0914,
                "crosses_accurate": 0.0914,
                "touches": 11.3994,
                "possession_lost": 1.5935,
                "dispossessed": 0.0946,
                "duels_lost": 0.5556,
                "aerial_lost": 0.3411,
                "total_contest": 0.0556,
                "won_contest": 0.0556,
                "ball_recovery": 1.0362,
                "challenges_lost": 0.2617,
                "fouls": 0.142,
                "fouls_drawn": 0.066,
                "blocks": 0.0249,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0264,
                "expected_assists": 0.0225,
                "shots_on_target": 0.0293,
                "big_chances_created": 0.1075,
                "xgot": 0.0086,
                "ball_carries": 2.3421,
                "total_progression": 1.3558,
                "progressive_carries": 0.0,
                "key_pass": 0.2649,
                "shots_off_target": 0.0547,
                "bench_appearance_probability": 0.337,
                "bench_expected_minutes": 14.42
              },
              "params": {
                "expected_minutes": 14.42,
                "projection_minutes": 24.31,
                "minutes_scale": 0.593,
                "appearance_probability": 0.337
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2342,
                "tackles": 0.4547,
                "tackles_won": 0.2809,
                "clearances": 0.5708,
                "aerial_won": 0.1726,
                "total_shots": 0.084,
                "rating": 6.7082,
                "minutes": 14.42,
                "total_pass": 8.3205,
                "accurate_pass": 7.0567,
                "duels_won": 0.8785,
                "total_long_balls": 0.6317,
                "accurate_long_balls": 0.1977,
                "total_own_half_passes": 3.8259,
                "accurate_own_half_passes": 3.6297,
                "total_opp_half_passes": 4.4946,
                "accurate_opp_half_passes": 3.427,
                "crosses_total": 0.0914,
                "crosses_accurate": 0.0914,
                "touches": 11.3994,
                "possession_lost": 1.5935,
                "dispossessed": 0.0946,
                "duels_lost": 0.5556,
                "aerial_lost": 0.3411,
                "total_contest": 0.0556,
                "won_contest": 0.0556,
                "ball_recovery": 1.0362,
                "challenges_lost": 0.2617,
                "fouls": 0.142,
                "fouls_drawn": 0.066,
                "blocks": 0.0249,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0264,
                "expected_assists": 0.0225,
                "shots_on_target": 0.0293,
                "big_chances_created": 0.1075,
                "xgot": 0.0086,
                "ball_carries": 2.3421,
                "total_progression": 1.3558,
                "progressive_carries": 0.0,
                "key_pass": 0.2649,
                "shots_off_target": 0.0547,
                "bench_appearance_probability": 0.337,
                "bench_expected_minutes": 14.42
              },
              "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.2342,
                "tackles": 0.4547,
                "tackles_won": 0.2809,
                "clearances": 0.5708,
                "aerial_won": 0.1726,
                "total_shots": 0.084,
                "rating": 6.7082,
                "minutes": 14.42,
                "total_pass": 8.3205,
                "accurate_pass": 7.0567,
                "duels_won": 0.8785,
                "total_long_balls": 0.6317,
                "accurate_long_balls": 0.1977,
                "total_own_half_passes": 3.8259,
                "accurate_own_half_passes": 3.6297,
                "total_opp_half_passes": 4.4946,
                "accurate_opp_half_passes": 3.427,
                "crosses_total": 0.0914,
                "crosses_accurate": 0.0914,
                "touches": 11.3994,
                "possession_lost": 1.5935,
                "dispossessed": 0.0946,
                "duels_lost": 0.5556,
                "aerial_lost": 0.3411,
                "total_contest": 0.0556,
                "won_contest": 0.0556,
                "ball_recovery": 1.0362,
                "challenges_lost": 0.2617,
                "fouls": 0.142,
                "fouls_drawn": 0.066,
                "blocks": 0.0249,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0264,
                "expected_assists": 0.0225,
                "shots_on_target": 0.0293,
                "big_chances_created": 0.1075,
                "xgot": 0.0086,
                "ball_carries": 2.3421,
                "total_progression": 1.3558,
                "progressive_carries": 0.0,
                "key_pass": 0.2649,
                "shots_off_target": 0.0547,
                "bench_appearance_probability": 0.337,
                "bench_expected_minutes": 14.42,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.337,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 12 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "interceptions": 0.2342,
                "tackles": 0.4547,
                "tackles_won": 0.2809,
                "clearances": 0.5708,
                "aerial_won": 0.1726,
                "total_shots": 0.084,
                "rating": 6.7082,
                "minutes": 14.42,
                "total_pass": 8.3205,
                "accurate_pass": 7.0567,
                "duels_won": 0.8785,
                "total_long_balls": 0.6317,
                "accurate_long_balls": 0.1977,
                "total_own_half_passes": 3.8259,
                "accurate_own_half_passes": 3.6297,
                "total_opp_half_passes": 4.4946,
                "accurate_opp_half_passes": 3.427,
                "crosses_total": 0.0914,
                "crosses_accurate": 0.0914,
                "touches": 11.3994,
                "possession_lost": 1.5935,
                "dispossessed": 0.0946,
                "duels_lost": 0.5556,
                "aerial_lost": 0.3411,
                "total_contest": 0.0556,
                "won_contest": 0.0556,
                "ball_recovery": 1.0362,
                "challenges_lost": 0.2617,
                "fouls": 0.142,
                "fouls_drawn": 0.066,
                "blocks": 0.0249,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0264,
                "expected_assists": 0.0225,
                "shots_on_target": 0.0293,
                "big_chances_created": 0.1075,
                "xgot": 0.0086,
                "ball_carries": 2.3421,
                "total_progression": 1.3558,
                "progressive_carries": 0.0,
                "key_pass": 0.2649,
                "shots_off_target": 0.0547,
                "bench_appearance_probability": 0.337,
                "bench_expected_minutes": 14.42,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 78.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": 2137,
                "fifa_rank": 1168.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Habib Diarra": {
          "player_id": 1128532,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 179,
          "market_value": 37000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0541,
            "assist_rate": 0.0669,
            "assists": 0,
            "expected_goals": 0.0716,
            "goal_rate": 0.0479,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6721,
            "minutes": 19,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 2.2771,
            "dispossessed": 0.3781,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 19,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.718,
            "bench_expected_minutes": 18.72,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0496,
            "projected_assists": 0,
            "assist_probability": 0.0378,
            "finishing_factor": 0.855,
            "creation_factor": 1.1844,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 18,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1573,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0263,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 29,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1273,
                "expected_assists": 0.0387,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 13,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1407,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 18,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.15,
                "expected_assists": 0.018,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 10,
                "accurate_pass": 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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 65,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0281,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6504,
                "expected_assists": 0.0696,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 40,
                "accurate_pass": 33,
                "key_pass": 1,
                "interceptions": 1,
                "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": 14025026,
              "match_date": "2026-04-12",
              "home_team": "Sunderland",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0445,
                "expected_assists": 0.0314,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 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": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 85,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.241,
                "expected_assists": 0.0172,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "tackles": 3,
                "tackles_won": 3,
                "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": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0217,
                "expected_assists": 0.0859,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "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": 3071,
            "combined_rank_score": 1038.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1436.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.6721,
            "source_file": "data/player_rankings.csv",
            "player_name": "Habib Diarra",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Jaidon Anthony",
                  "ranking": 3072
                },
                {
                  "player_name": "Alex Arce",
                  "ranking": 3073
                },
                {
                  "player_name": "Matías Dituro",
                  "ranking": 3074
                },
                {
                  "player_name": "Liam Delap",
                  "ranking": 3075
                },
                {
                  "player_name": "Leopold Querfeld",
                  "ranking": 3076
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.753,
          "history_matches": 22,
          "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": 22,
            "data_confidence": 0.753,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.72,
            "bench_appearance_prob": 0.718,
            "market_value_adjustment": 1.0144,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 3.333333333333333,
              "prior_reliability": 0.02
            },
            "rationale": "Bench projection scaled from XGBoost M_service (22 historical appearances) to 18.7 expected mins (appearance prob 0.72); FBref playing time empirical prior: 2.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.6222,
                "expected_assists": 0.0525,
                "assists": 0.0704,
                "assist_rate": 0.0704,
                "expected_goals": 0.0695,
                "goals": 0.0518,
                "goal_rate": 0.0518,
                "shots_on_target": 0.272,
                "total_shots": 0.7451,
                "rating": 6.6721,
                "minutes": 20.47,
                "total_pass": 7.3294,
                "accurate_pass": 6.5327,
                "duels_won": 0.8043,
                "total_long_balls": 0.5674,
                "accurate_long_balls": 0.3029,
                "total_own_half_passes": 1.9098,
                "accurate_own_half_passes": 1.9098,
                "total_opp_half_passes": 5.4196,
                "accurate_opp_half_passes": 4.6229,
                "crosses_total": 0.9629,
                "crosses_accurate": 0.2712,
                "touches": 11.8964,
                "possession_lost": 2.4547,
                "dispossessed": 0.3727,
                "duels_lost": 1.8952,
                "aerial_won": 0.3803,
                "aerial_lost": 0.3138,
                "interceptions": 0.0833,
                "tackles_won": 0.0833,
                "tackles": 0.2645,
                "clearances": 0.1959,
                "total_contest": 0.434,
                "won_contest": 0.0,
                "challenges_lost": 0.1985,
                "fouls": 0.5762,
                "fouls_drawn": 0.1595,
                "blocks": 0.0,
                "big_chances_created": 0.3564,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.068,
                "total_progression": 20.3513,
                "progressive_carries": 0.81,
                "shots_off_target": 0.4731
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.1543,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1312,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.1115,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0948,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0806,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0685,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0582,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0495,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Newcastle United",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0421,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0357,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.0965,
                  "creative_index": 0.2513,
                  "expectedGoals": 0.1228,
                  "expectedAssists": 0.0607,
                  "onTargetScoringAttempt": 0.2167
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6221931576728821,
                    "model_output": 0.6222,
                    "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.3616
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0292
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0222
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0227
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0176
                        }
                      ],
                      "others": 0.0995,
                      "total": 0.6222,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.52433
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.057205
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043818
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.042852
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.033121
                        }
                      ],
                      "others_margin": 0.174297
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05250793695449829,
                    "model_output": 0.0525,
                    "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": "possessionLostCtrl",
                          "contribution": -0.004
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0023
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0023
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0014
                        }
                      ],
                      "others": 0.0038,
                      "total": 0.0525,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551175
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.083992
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.049582
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.046693
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.029367
                        }
                      ],
                      "others_margin": 0.077517
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07038841396570206,
                    "model_output": 0.0704,
                    "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.0195
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.008
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0055
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0046
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.0704,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.259684
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.129023
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.090386
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.072312
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.065895
                        }
                      ],
                      "others_margin": -0.031206
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06947317719459534,
                    "model_output": 0.0695,
                    "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.0415
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0072
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0055
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0059
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.004
                        }
                      ],
                      "others": -0.006,
                      "total": 0.0695,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.578177
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.128075
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.086931
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.086588
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.054609
                        }
                      ],
                      "others_margin": -0.084924
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05176728591322899,
                    "model_output": 0.0518,
                    "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.0433
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0065
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0063
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0047
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0518,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.586689
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.113541
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.109339
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.083055
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.06857
                        }
                      ],
                      "others_margin": -0.066581
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2719569504261017,
                    "model_output": 0.272,
                    "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.1369
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0226
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0214
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0201
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0176
                        }
                      ],
                      "others": 0.0032,
                      "total": 0.272,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.549318
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.114252
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.097263
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.083526
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.067536
                        }
                      ],
                      "others_margin": 0.011668
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.745017409324646,
                    "model_output": 0.745,
                    "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.4841
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0677
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0571
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0357
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0201
                        }
                      ],
                      "others": 0.0982,
                      "total": 0.745,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484135
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.067691
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057059
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.035667
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.020072
                        }
                      ],
                      "others_margin": 0.098343
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.672055244445801,
                    "model_output": 6.6721,
                    "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.0685
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0352
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0273
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0135
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0091
                        }
                      ],
                      "others": -0.0232,
                      "total": 6.6721,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.06846
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.035187
                        },
                        {
                          "name": "rating",
                          "margin": -0.027309
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013497
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.009118
                        }
                      ],
                      "others_margin": -0.023243
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 22,
                  "role_matches": 7,
                  "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.0144, quality 0.764)",
              "stats": {
                "key_pass": 0.6312,
                "expected_assists": 0.0533,
                "assists": 0.0714,
                "assist_rate": 0.0714,
                "expected_goals": 0.0705,
                "goals": 0.0525,
                "goal_rate": 0.0525,
                "shots_on_target": 0.2759,
                "total_shots": 0.7558,
                "rating": 6.6721,
                "minutes": 20.47,
                "total_pass": 7.4349,
                "accurate_pass": 6.6268,
                "duels_won": 0.8159,
                "total_long_balls": 0.5756,
                "accurate_long_balls": 0.3073,
                "total_own_half_passes": 1.9373,
                "accurate_own_half_passes": 1.9373,
                "total_opp_half_passes": 5.4976,
                "accurate_opp_half_passes": 4.6895,
                "crosses_total": 0.9768,
                "crosses_accurate": 0.2751,
                "touches": 12.0677,
                "possession_lost": 2.49,
                "dispossessed": 0.3781,
                "duels_lost": 1.9225,
                "aerial_won": 0.3858,
                "aerial_lost": 0.3183,
                "interceptions": 0.0845,
                "tackles_won": 0.0845,
                "tackles": 0.2683,
                "clearances": 0.1987,
                "total_contest": 0.4402,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5845,
                "fouls_drawn": 0.1618,
                "blocks": 0.0,
                "big_chances_created": 0.3615,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.1266,
                "total_progression": 20.6444,
                "progressive_carries": 0.8217,
                "shots_off_target": 0.4799
              },
              "params": {
                "market_value_eur": 37000000,
                "quality_factor": 0.7641,
                "boost_factor": 1.0144,
                "reference_quality": 0.505,
                "history_matches": 22,
                "history_shrink": 0.1852,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0024)",
              "stats": {
                "key_pass": 0.6312,
                "expected_assists": 0.0533,
                "assists": 0.0731,
                "assist_rate": 0.0731,
                "expected_goals": 0.0705,
                "goals": 0.0524,
                "goal_rate": 0.0524,
                "shots_on_target": 0.2752,
                "total_shots": 0.7557,
                "rating": 6.6721,
                "minutes": 20.47,
                "total_pass": 7.4349,
                "accurate_pass": 6.6268,
                "duels_won": 0.8159,
                "total_long_balls": 0.5756,
                "accurate_long_balls": 0.3073,
                "total_own_half_passes": 1.9373,
                "accurate_own_half_passes": 1.9373,
                "total_opp_half_passes": 5.4976,
                "accurate_opp_half_passes": 4.6895,
                "crosses_total": 0.9744,
                "crosses_accurate": 0.2751,
                "touches": 12.0677,
                "possession_lost": 2.49,
                "dispossessed": 0.3781,
                "duels_lost": 1.9225,
                "aerial_won": 0.3858,
                "aerial_lost": 0.3183,
                "interceptions": 0.0843,
                "tackles_won": 0.0843,
                "tackles": 0.2683,
                "clearances": 0.1987,
                "total_contest": 0.4402,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5849,
                "fouls_drawn": 0.1614,
                "blocks": 0.0,
                "big_chances_created": 0.3615,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.1266,
                "total_progression": 20.6444,
                "progressive_carries": 0.8217,
                "shots_off_target": 0.4799
              },
              "params": {
                "blend_weight": 0.0024,
                "history_matches": 22,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2274,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Sunderland"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.5 to 18.7 expected minutes (appearance prob 0.72)",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0487,
                "assists": 0.0669,
                "assist_rate": 0.0669,
                "expected_goals": 0.0645,
                "goals": 0.0479,
                "goal_rate": 0.0479,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72
              },
              "params": {
                "expected_minutes": 18.72,
                "projection_minutes": 20.47,
                "minutes_scale": 0.9145,
                "appearance_probability": 0.718
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0487,
                "assists": 0.0669,
                "assist_rate": 0.0669,
                "expected_goals": 0.0645,
                "goals": 0.0479,
                "goal_rate": 0.0479,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.855,
                "creation_factor": 1.1844
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.718
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0645,
                  "after": 0.0716
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0487,
                  "after": 0.0541
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 16 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.855,
                "creation_factor": 1.1844,
                "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": 3071,
                "fifa_rank": 1436.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": {
                "key_pass": 0.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0496,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.855,
                "creation_factor": 1.1844,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0496,
                "scorer_weight": 0.044,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0346,
                "finishing_factor": 0.855,
                "appearance_weight": 0.718,
                "weight_rank": 10,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0496,
                "projected_assists": 0,
                "assist_probability": 0.0378,
                "finishing_factor": 0.855,
                "creation_factor": 1.1844,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0378,
                "provider_weight": 0.046,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0455,
                "creation_factor": 1.1844,
                "appearance_weight": 0.718,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Chris Rigg": {
          "player_id": 1394089,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 177,
          "market_value": 24000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0468,
            "assist_rate": 0.0614,
            "assists": 0,
            "expected_goals": 0.0666,
            "goal_rate": 0.0587,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6417,
            "minutes": 16,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 0,
            "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": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.8857,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "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": 2,
            "total_progression": 9,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.711,
            "bench_expected_minutes": 15.8,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0458,
            "projected_assists": 0,
            "assist_probability": 0.0325,
            "finishing_factor": 0.9882,
            "creation_factor": 1.2096,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "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"
            },
            {
              "match_id": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 10,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0065,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "interceptions": 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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1091,
                "expected_assists": 0.0632,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 12,
                "accurate_pass": 11,
                "clearances": 2,
                "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": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 63,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0986,
                "expected_assists": 0.0149,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 16,
                "tackles": 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": 14025026,
              "match_date": "2026-04-12",
              "home_team": "Sunderland",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 82,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0459,
                "expected_assists": 0.1449,
                "total_shots": 1,
                "total_pass": 21,
                "accurate_pass": 11,
                "key_pass": 1,
                "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"
            },
            {
              "match_id": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1821,
                "expected_assists": 0.5641,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 3,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0984,
                "expected_assists": 0.0137,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "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": 14023982,
              "match_date": "2026-03-03",
              "home_team": "Leeds United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3744,
            "combined_rank_score": 1739.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 784.0,
            "sofascore_rating": 6.6333,
            "sofascore_appearances": 18.0,
            "fifa_rank": 2694.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.6417,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chris Rigg",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mislav Oršić",
                  "ranking": 3739
                },
                {
                  "player_name": "Visar Musliu",
                  "ranking": 3740
                },
                {
                  "player_name": "Christian Walton",
                  "ranking": 3741
                },
                {
                  "player_name": "Neal Maupay",
                  "ranking": 3742
                },
                {
                  "player_name": "Wilfried Gnonto",
                  "ranking": 3743
                }
              ],
              "lower": [
                {
                  "player_name": "Mads Bech Sørensen",
                  "ranking": 3745
                },
                {
                  "player_name": "Gift Links",
                  "ranking": 3746
                },
                {
                  "player_name": "Colin Coosemans",
                  "ranking": 3747
                },
                {
                  "player_name": "Davy Roef",
                  "ranking": 3748
                },
                {
                  "player_name": "Iván Balliu",
                  "ranking": 3749
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 20,
          "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": 20,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 15.8,
            "bench_appearance_prob": 0.711,
            "market_value_adjustment": 1.0098,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 10.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (20 historical appearances) to 15.8 expected mins (appearance prob 0.71); FBref playing time empirical prior: 2.0 sub appearances, 10.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3596,
                "expected_assists": 0.0279,
                "assists": 0.0406,
                "assist_rate": 0.0406,
                "expected_goals": 0.0397,
                "goals": 0.0388,
                "goal_rate": 0.0388,
                "shots_on_target": 0.1481,
                "total_shots": 0.3517,
                "rating": 6.6417,
                "minutes": 10.35,
                "total_pass": 2.1716,
                "accurate_pass": 1.4131,
                "duels_won": 0.1755,
                "total_long_balls": 0.2218,
                "accurate_long_balls": 0.1199,
                "total_own_half_passes": 0.6566,
                "accurate_own_half_passes": 0.3595,
                "total_opp_half_passes": 1.515,
                "accurate_opp_half_passes": 1.0537,
                "crosses_total": 0.2065,
                "crosses_accurate": 0.0866,
                "touches": 3.2796,
                "possession_lost": 1.2449,
                "dispossessed": 0.0,
                "duels_lost": 0.5369,
                "aerial_won": 0.1019,
                "aerial_lost": 0.0,
                "interceptions": 0.1199,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0736,
                "total_contest": 0.1199,
                "won_contest": 0.0,
                "challenges_lost": 0.417,
                "fouls": 0.0,
                "fouls_drawn": 0.0736,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.175,
                "total_progression": 6.1225,
                "progressive_carries": 0.4437,
                "shots_off_target": 0.2036
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.156,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1326,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1127,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0958,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0815,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0692,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0589,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.05,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0425,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-03",
                    "opponent": "Leeds United",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0361,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.5306,
                  "creative_index": 0.1885,
                  "expectedGoals": 0.0366,
                  "expectedAssists": 0.0521,
                  "onTargetScoringAttempt": 0.2007
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3596242070198059,
                    "model_output": 0.3596,
                    "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.3936
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0388
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.032
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0207
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0175
                        }
                      ],
                      "others": -0.059,
                      "total": 0.3596,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.587175
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.082074
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.073008
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.050203
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.042662
                        }
                      ],
                      "others_margin": -0.152081
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.027861986309289932,
                    "model_output": 0.0279,
                    "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.0391
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0064
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0031
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0015
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0013
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.0279,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.608264
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.146576
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.080014
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.042448
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.036761
                        }
                      ],
                      "others_margin": -0.210382
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.040563005954027176,
                    "model_output": 0.0406,
                    "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.022
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0071
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0063
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0052
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0036
                        }
                      ],
                      "others": -0.0076,
                      "total": 0.0406,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.299093
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.11889
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.118491
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.109718
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.078393
                        }
                      ],
                      "others_margin": -0.174696
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03965533524751663,
                    "model_output": 0.0397,
                    "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.0448
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0064
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0044
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0018
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0016
                        }
                      ],
                      "others": 0.0011,
                      "total": 0.0397,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.643666
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137829
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.107496
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.046513
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.043382
                        }
                      ],
                      "others_margin": 0.024509
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03879848122596741,
                    "model_output": 0.0388,
                    "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.0464
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0076
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0042
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.003
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0026
                        }
                      ],
                      "others": -0.0002,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.644106
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.160266
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.099916
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.078285
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.068525
                        }
                      ],
                      "others_margin": -0.008911
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14806294441223145,
                    "model_output": 0.1481,
                    "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.1414
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0437
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0115
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0043
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0035
                        }
                      ],
                      "others": 0.0199,
                      "total": 0.1481,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.573619
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.27359
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086728
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.033024
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.027023
                        }
                      ],
                      "others_margin": 0.144857
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3516359329223633,
                    "model_output": 0.3516,
                    "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.3789
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0465
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0214
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0214
                        }
                      ],
                      "others": 0.0369,
                      "total": 0.3516,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.378932
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.207561
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.046507
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.021439
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.021367
                        }
                      ],
                      "others_margin": 0.036978
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.641719341278076,
                    "model_output": 6.6417,
                    "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.0609
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0521
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0308
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0178
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0166
                        }
                      ],
                      "others": -0.029,
                      "total": 6.6417,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.060894
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.052092
                        },
                        {
                          "name": "rating",
                          "margin": -0.030788
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.017803
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016639
                        }
                      ],
                      "others_margin": -0.028934
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 20,
                  "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.0098, quality 0.669)",
              "stats": {
                "key_pass": 0.3631,
                "expected_assists": 0.0281,
                "assists": 0.041,
                "assist_rate": 0.041,
                "expected_goals": 0.04,
                "goals": 0.0392,
                "goal_rate": 0.0392,
                "shots_on_target": 0.1495,
                "total_shots": 0.3551,
                "rating": 6.6417,
                "minutes": 10.35,
                "total_pass": 2.1929,
                "accurate_pass": 1.4269,
                "duels_won": 0.1772,
                "total_long_balls": 0.224,
                "accurate_long_balls": 0.1211,
                "total_own_half_passes": 0.663,
                "accurate_own_half_passes": 0.363,
                "total_opp_half_passes": 1.5298,
                "accurate_opp_half_passes": 1.064,
                "crosses_total": 0.2085,
                "crosses_accurate": 0.0874,
                "touches": 3.3117,
                "possession_lost": 1.2571,
                "dispossessed": 0.0,
                "duels_lost": 0.5422,
                "aerial_won": 0.1029,
                "aerial_lost": 0.0,
                "interceptions": 0.1211,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0743,
                "total_contest": 0.1211,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.0743,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1865,
                "total_progression": 6.1825,
                "progressive_carries": 0.448,
                "shots_off_target": 0.2056
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0098,
                "reference_quality": 0.505,
                "history_matches": 20,
                "history_shrink": 0.2,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0017)",
              "stats": {
                "key_pass": 0.3631,
                "expected_assists": 0.0281,
                "assists": 0.0409,
                "assist_rate": 0.0409,
                "expected_goals": 0.04,
                "goals": 0.0391,
                "goal_rate": 0.0391,
                "shots_on_target": 0.1492,
                "total_shots": 0.3545,
                "rating": 6.6417,
                "minutes": 10.35,
                "total_pass": 2.1929,
                "accurate_pass": 1.4269,
                "duels_won": 0.1772,
                "total_long_balls": 0.224,
                "accurate_long_balls": 0.1211,
                "total_own_half_passes": 0.663,
                "accurate_own_half_passes": 0.363,
                "total_opp_half_passes": 1.5298,
                "accurate_opp_half_passes": 1.064,
                "crosses_total": 0.2081,
                "crosses_accurate": 0.0874,
                "touches": 3.3117,
                "possession_lost": 1.2571,
                "dispossessed": 0.0,
                "duels_lost": 0.5422,
                "aerial_won": 0.1029,
                "aerial_lost": 0.0,
                "interceptions": 0.1209,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0743,
                "total_contest": 0.1211,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.0742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1865,
                "total_progression": 6.1825,
                "progressive_carries": 0.448,
                "shots_off_target": 0.2056
              },
              "params": {
                "blend_weight": 0.0017,
                "history_matches": 20,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.115,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Sunderland"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 10.3 to 15.8 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0421,
                "assists": 0.0614,
                "assist_rate": 0.0614,
                "expected_goals": 0.06,
                "goals": 0.0587,
                "goal_rate": 0.0587,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8
              },
              "params": {
                "expected_minutes": 15.8,
                "projection_minutes": 10.35,
                "minutes_scale": 1.5,
                "appearance_probability": 0.711
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0421,
                "assists": 0.0614,
                "assist_rate": 0.0614,
                "expected_goals": 0.06,
                "goals": 0.0587,
                "goal_rate": 0.0587,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.9882,
                "creation_factor": 1.2096
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.711
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.06,
                  "after": 0.0666
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 18 by projected rating, fifa_overall 74.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.9882,
                "creation_factor": 1.2096,
                "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": 3744,
                "fifa_rank": 2694.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.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.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0458,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9882,
                "creation_factor": 1.2096,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0458,
                "scorer_weight": 0.0468,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0368,
                "finishing_factor": 0.9882,
                "appearance_weight": 0.711,
                "weight_rank": 9,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0458,
                "projected_assists": 0,
                "assist_probability": 0.0325,
                "finishing_factor": 0.9882,
                "creation_factor": 1.2096,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0325,
                "provider_weight": 0.0402,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0398,
                "creation_factor": 1.2096,
                "appearance_weight": 0.711,
                "weight_rank": 8,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Brian Brobbey": {
          "player_id": 910048,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 180,
          "market_value": 42000000,
          "stats": {
            "expected_goals": 0.2586,
            "goal_rate": 0.3465,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0313,
            "key_pass": 0,
            "rating": 6.8489,
            "minutes": 27,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 3.4409,
            "dispossessed": 0.4723,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.097,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1962,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 4,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.363,
            "bench_expected_minutes": 26.69,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0827,
            "projected_assists": 0,
            "assist_probability": 0.0112,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 9.8,
                "goal_rate": 3.0,
                "goals": 3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 2.3467,
                "expected_assists": 0.0354,
                "total_shots": 5,
                "shots_on_target": 4,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 15,
                "key_pass": 1,
                "aerial_won": 4,
                "duels_won": 10
              },
              "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0096,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "key_pass": 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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2617,
                "expected_assists": 0.0611,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 15,
                "key_pass": 3,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 64,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0313,
                "expected_assists": 0.003,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "clearances": 1,
                "aerial_won": 4,
                "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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 67,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2977,
                "expected_assists": 0.0016,
                "total_shots": 2,
                "shots_on_target": 1,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 61,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.9054,
                "expected_assists": 0.0063,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 9,
                "accurate_pass": 8,
                "clearances": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 77,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3287,
                "expected_assists": 0.0057,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "tackles": 1,
                "clearances": 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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1772,
                "expected_assists": 0.1063,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 15,
                "key_pass": 3,
                "clearances": 2,
                "aerial_won": 4,
                "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 72,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0598,
                "expected_assists": 0.0693,
                "total_shots": 1,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.013,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2748,
            "combined_rank_score": 950.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 789.0,
            "sofascore_rating": 6.629,
            "sofascore_appearances": 31.0,
            "fifa_rank": 1112.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8489,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brian Brobbey",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jon Karrikaburu",
                  "ranking": 2743
                },
                {
                  "player_name": "Cristopher Barrera",
                  "ranking": 2744
                },
                {
                  "player_name": "Vilius Armalas",
                  "ranking": 2745
                },
                {
                  "player_name": "Egor Parkhomenko",
                  "ranking": 2746
                },
                {
                  "player_name": "Ruiz de Galarreta",
                  "ranking": 2747
                }
              ],
              "lower": [
                {
                  "player_name": "Matías Campos López",
                  "ranking": 2749
                },
                {
                  "player_name": "Antonín Kinský",
                  "ranking": 2750
                },
                {
                  "player_name": "Austin Ludwik",
                  "ranking": 2751
                },
                {
                  "player_name": "Tae-in Jung",
                  "ranking": 2752
                },
                {
                  "player_name": "Mauro Icardi",
                  "ranking": 2753
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.764,
          "history_matches": 36,
          "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": 36,
            "data_confidence": 0.764,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.691976588065373,
            "bench_appearance_prob": 0.363,
            "market_value_adjustment": 1.0105,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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.0933
            },
            "rationale": "Bench projection scaled from XGBoost F_service (36 historical appearances) to 26.7 expected mins (appearance prob 0.36); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2064,
                "goals": 0.3095,
                "goal_rate": 0.3095,
                "shots_on_target": 0.7121,
                "total_shots": 1.3778,
                "expected_assists": 0.025,
                "key_pass": 0.2927,
                "rating": 6.8489,
                "minutes": 23.92,
                "total_pass": 3.3084,
                "accurate_pass": 2.4997,
                "duels_won": 1.7202,
                "total_long_balls": 0.0626,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.2654,
                "accurate_opp_half_passes": 1.5303,
                "crosses_total": 0.1952,
                "crosses_accurate": 0.0,
                "touches": 8.1467,
                "possession_lost": 3.0516,
                "dispossessed": 0.4674,
                "duels_lost": 2.1296,
                "aerial_lost": 1.1252,
                "total_contest": 0.1659,
                "won_contest": 0.0,
                "ball_recovery": 0.9526,
                "challenges_lost": 0.0626,
                "fouls": 0.4283,
                "fouls_drawn": 0.3794,
                "assists": 0.0866,
                "assist_rate": 0.0866,
                "interceptions": 0.0,
                "tackles_won": 0.1199,
                "tackles": 0.3475,
                "clearances": 0.3979,
                "blocks": 0.0866,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1659,
                "xgot": 0.1567,
                "offsides": 0.1825,
                "ball_carries": 1.5405,
                "total_progression": 3.3486,
                "shots_off_target": 0.6657
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 9.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.5557,
                  "totalOppositionHalfPasses": 9.9177,
                  "accurateOppositionHalfPasses": 7.1491,
                  "accuratePass": 10.2995,
                  "totalShots": 2.1064
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.20640966296195984,
                    "model_output": 0.2064,
                    "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.0834
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.027
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0154
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0124
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0103
                        }
                      ],
                      "others": 0.0257,
                      "total": 0.2064,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.543229
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.210052
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.102806
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.075449
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.058884
                        }
                      ],
                      "others_margin": 0.132824
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.3095308542251587,
                    "model_output": 0.3095,
                    "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.0759
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0432
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0346
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0137
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0119
                        }
                      ],
                      "others": 0.0783,
                      "total": 0.3095,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.466068
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.291351
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.184059
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.064639
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.052721
                        }
                      ],
                      "others_margin": 0.291465
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7120913863182068,
                    "model_output": 0.7121,
                    "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.1976
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0697
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0407
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0341
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0336
                        }
                      ],
                      "others": 0.1946,
                      "total": 0.7121,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.458756
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.186782
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.094918
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.073042
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.067164
                        }
                      ],
                      "others_margin": 0.319095
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.3777797222137451,
                    "model_output": 1.3778,
                    "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.6713
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1702
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.124
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.1042
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0907
                        }
                      ],
                      "others": 0.1813,
                      "total": 1.3778,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.671328
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.170227
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.123982
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.104156
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.090745
                        }
                      ],
                      "others_margin": 0.18129
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.025048714131116867,
                    "model_output": 0.025,
                    "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.0047
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0041
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0035
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.025,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.342382
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.108773
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.105987
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.100293
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.065984
                        }
                      ],
                      "others_margin": -0.21906
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2926689684391022,
                    "model_output": 0.2927,
                    "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.2735
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0251
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0198
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0159
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.011
                        }
                      ],
                      "others": -0.036,
                      "total": 0.2927,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.520484
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.064717
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.054309
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.045732
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.033031
                        }
                      ],
                      "others_margin": -0.11588
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.848901271820068,
                    "model_output": 6.8489,
                    "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": "passValueNormalized",
                          "contribution": 0.1119
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0711
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0213
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.018
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0173
                        }
                      ],
                      "others": -0.0107,
                      "total": 6.8489,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": 0.111912
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.071147
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.021301
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.018023
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.01728
                        }
                      ],
                      "others_margin": -0.010631
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 36,
                  "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.0105, quality 0.791)",
              "stats": {
                "expected_goals": 0.2086,
                "goals": 0.3128,
                "goal_rate": 0.3128,
                "shots_on_target": 0.7196,
                "total_shots": 1.3923,
                "expected_assists": 0.0253,
                "key_pass": 0.2957,
                "rating": 6.8489,
                "minutes": 23.92,
                "total_pass": 3.3431,
                "accurate_pass": 2.5259,
                "duels_won": 1.7383,
                "total_long_balls": 0.0633,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.2892,
                "accurate_opp_half_passes": 1.5464,
                "crosses_total": 0.1972,
                "crosses_accurate": 0.0,
                "touches": 8.2322,
                "possession_lost": 3.0836,
                "dispossessed": 0.4723,
                "duels_lost": 2.152,
                "aerial_lost": 1.137,
                "total_contest": 0.1676,
                "won_contest": 0.0,
                "ball_recovery": 0.9626,
                "challenges_lost": 0.0633,
                "fouls": 0.4328,
                "fouls_drawn": 0.3834,
                "assists": 0.0875,
                "assist_rate": 0.0875,
                "interceptions": 0.0,
                "tackles_won": 0.1212,
                "tackles": 0.3511,
                "clearances": 0.4021,
                "blocks": 0.0875,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1676,
                "xgot": 0.1583,
                "offsides": 0.1844,
                "ball_carries": 1.5567,
                "total_progression": 3.3838,
                "shots_off_target": 0.6727
              },
              "params": {
                "market_value_eur": 42000000,
                "quality_factor": 0.7909,
                "boost_factor": 1.0105,
                "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.0074)",
              "stats": {
                "expected_goals": 0.2086,
                "goals": 0.3105,
                "goal_rate": 0.3105,
                "shots_on_target": 0.7156,
                "total_shots": 1.3861,
                "expected_assists": 0.0253,
                "key_pass": 0.2957,
                "rating": 6.8489,
                "minutes": 23.92,
                "total_pass": 3.3431,
                "accurate_pass": 2.5259,
                "duels_won": 1.7383,
                "total_long_balls": 0.0633,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.2892,
                "accurate_opp_half_passes": 1.5464,
                "crosses_total": 0.1957,
                "crosses_accurate": 0.0,
                "touches": 8.2322,
                "possession_lost": 3.0836,
                "dispossessed": 0.4723,
                "duels_lost": 2.152,
                "aerial_lost": 1.137,
                "total_contest": 0.1676,
                "won_contest": 0.0,
                "ball_recovery": 0.9626,
                "challenges_lost": 0.0633,
                "fouls": 0.4338,
                "fouls_drawn": 0.382,
                "assists": 0.0869,
                "assist_rate": 0.0869,
                "interceptions": 0.0,
                "tackles_won": 0.1203,
                "tackles": 0.3511,
                "clearances": 0.4021,
                "blocks": 0.0875,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1676,
                "xgot": 0.1583,
                "offsides": 0.1872,
                "ball_carries": 1.5567,
                "total_progression": 3.3838,
                "shots_off_target": 0.6727
              },
              "params": {
                "blend_weight": 0.0074,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2658,
                "prior_reliability": 0.0933,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.3923,
                  "after": 1.3861
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.9 to 26.7 expected minutes (appearance prob 0.36)",
              "stats": {
                "expected_goals": 0.2328,
                "goals": 0.3465,
                "goal_rate": 0.3465,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0282,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assists": 0.097,
                "assist_rate": 0.097,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1766,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "expected_minutes": 26.69,
                "projection_minutes": 23.92,
                "minutes_scale": 1.1159,
                "appearance_probability": 0.363
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2328,
                "goals": 0.3465,
                "goal_rate": 0.3465,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0282,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assists": 0.097,
                "assist_rate": 0.097,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1766,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "expected_goals": 0.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.25
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.363
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2328,
                  "after": 0.2586
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 4 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.25,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2748,
                "fifa_rank": 1112.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.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0827,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0827,
                "scorer_weight": 0.1173,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0923,
                "finishing_factor": 1.25,
                "appearance_weight": 0.363,
                "weight_rank": 5,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0827,
                "projected_assists": 0,
                "assist_probability": 0.0112,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0112,
                "provider_weight": 0.0142,
                "squad_weight_total": 1.0119,
                "weight_share": 0.014,
                "creation_factor": 1.25,
                "appearance_weight": 0.363,
                "weight_rank": 13,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Malick Fofana": {
          "player_id": 1195784,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 39,
          "height": 169,
          "market_value": 29000000,
          "stats": {
            "expected_goals": 0.0942,
            "goal_rate": 0.0884,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0299,
            "key_pass": 0,
            "rating": 6.673,
            "minutes": 26,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 5.706,
            "dispossessed": 1.0899,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.0999,
            "offsides": 0,
            "ball_carries": 7,
            "total_progression": 60,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.608,
            "bench_expected_minutes": 26.37,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0547,
            "projected_assists": 0,
            "assist_probability": 0.0179,
            "finishing_factor": 1.0267,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3875,
                "expected_assists": 0.0056,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 8,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 5,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2993,
            "combined_rank_score": 994.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 4.0,
            "fifa_rank": 1477.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.673,
            "source_file": "data/player_rankings.csv",
            "player_name": "Malick Fofana",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "José Alí Gutiérrez",
                  "ranking": 2988
                },
                {
                  "player_name": "Artem Potapov",
                  "ranking": 2989
                },
                {
                  "player_name": "Jayce Olivero",
                  "ranking": 2990
                },
                {
                  "player_name": "Felix Oberwaditzer",
                  "ranking": 2991
                },
                {
                  "player_name": "Kieran Tierney",
                  "ranking": 2992
                }
              ],
              "lower": [
                {
                  "player_name": "Kai Mauro",
                  "ranking": 2994
                },
                {
                  "player_name": "Rubén García",
                  "ranking": 2995
                },
                {
                  "player_name": "Nikola Mirković",
                  "ranking": 2996
                },
                {
                  "player_name": "Alvaro Abarzua",
                  "ranking": 2997
                },
                {
                  "player_name": "Felipe Salomoni",
                  "ranking": 2998
                }
              ]
            }
          },
          "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": 26.37159379857936,
            "bench_appearance_prob": 0.6077997181172436,
            "market_value_adjustment": 1.0384,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 26.4 expected mins (appearance prob 0.61)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0634,
                "goals": 0.066,
                "goal_rate": 0.066,
                "shots_on_target": 0.2812,
                "total_shots": 0.6759,
                "expected_assists": 0.0202,
                "key_pass": 0.2538,
                "rating": 6.673,
                "minutes": 20.47,
                "total_pass": 5.5053,
                "accurate_pass": 4.3391,
                "duels_won": 1.0583,
                "total_long_balls": 0.3304,
                "accurate_long_balls": 0.3304,
                "total_opp_half_passes": 3.4966,
                "accurate_opp_half_passes": 3.1079,
                "crosses_total": 1.6608,
                "crosses_accurate": 0.0,
                "touches": 11.4402,
                "possession_lost": 4.2653,
                "dispossessed": 1.0496,
                "duels_lost": 1.6608,
                "aerial_lost": 0.0,
                "total_contest": 0.6696,
                "won_contest": 0.6696,
                "ball_recovery": 0.7775,
                "challenges_lost": 0.0,
                "fouls": 0.6113,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3887,
                "tackles": 0.3887,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7775,
                "xgot": 0.0672,
                "offsides": 0.0,
                "ball_carries": 4.9436,
                "total_progression": 44.7228,
                "progressive_carries": 1.447,
                "shots_off_target": 0.3947
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1506,
                  "totalOppositionHalfPasses": 3.4966,
                  "accurateOppositionHalfPasses": 3.1079,
                  "accuratePass": 4.3392,
                  "totalShots": 1.1662
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06335057318210602,
                    "model_output": 0.0634,
                    "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.0923
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0126
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0069
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0056
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.025,
                      "total": 0.0634,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.62334
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.125558
                        },
                        {
                          "name": "goals",
                          "margin": -0.076691
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.06254
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.049072
                        }
                      ],
                      "others_margin": -0.332271
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06603369861841202,
                    "model_output": 0.066,
                    "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.0946
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0192
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.01
                        },
                        {
                          "name": "goals",
                          "contribution": -0.007
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0064
                        }
                      ],
                      "others": -0.0133,
                      "total": 0.066,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.624374
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.193595
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.11821
                        },
                        {
                          "name": "goals",
                          "margin": -0.092113
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.084256
                        }
                      ],
                      "others_margin": -0.182691
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2812325954437256,
                    "model_output": 0.2812,
                    "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.222
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0219
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0206
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0136
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0117
                        }
                      ],
                      "others": -0.0306,
                      "total": 0.2812,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.533518
                        },
                        {
                          "name": "goals",
                          "margin": -0.072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.068053
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.044302
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.038303
                        }
                      ],
                      "others_margin": -0.103314
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6759392023086548,
                    "model_output": 0.6759,
                    "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.5531
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0932
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0676
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0625
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0436
                        }
                      ],
                      "others": -0.1052,
                      "total": 0.6759,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.553127
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.093244
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.067605
                        },
                        {
                          "name": "goals",
                          "margin": -0.062534
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.043644
                        }
                      ],
                      "others_margin": -0.105113
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.020170215517282486,
                    "model_output": 0.0202,
                    "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.0228
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0106
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0044
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0021
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0025,
                      "total": 0.0202,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.437054
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.294743
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.152802
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.080727
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.071791
                        }
                      ],
                      "others_margin": -0.121976
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2538151443004608,
                    "model_output": 0.2538,
                    "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.3033
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0308
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.027
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0194
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0159
                        }
                      ],
                      "others": -0.0238,
                      "total": 0.2538,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.597933
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.086859
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.082655
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.064001
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.055587
                        }
                      ],
                      "others_margin": -0.089556
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.672970294952393,
                    "model_output": 6.673,
                    "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.0617
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0286
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0221
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0187
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0143
                        }
                      ],
                      "others": -0.0296,
                      "total": 6.673,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.061655
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.028649
                        },
                        {
                          "name": "rating",
                          "margin": -0.022112
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.018726
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.014312
                        }
                      ],
                      "others_margin": -0.029657
                    }
                  }
                ],
                "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.0384, quality 0.710)",
              "stats": {
                "expected_goals": 0.0658,
                "goals": 0.0686,
                "goal_rate": 0.0686,
                "shots_on_target": 0.292,
                "total_shots": 0.7019,
                "expected_assists": 0.0209,
                "key_pass": 0.2636,
                "rating": 6.673,
                "minutes": 20.47,
                "total_pass": 5.7167,
                "accurate_pass": 4.5057,
                "duels_won": 1.0989,
                "total_long_balls": 0.3431,
                "accurate_long_balls": 0.3431,
                "total_opp_half_passes": 3.6309,
                "accurate_opp_half_passes": 3.2272,
                "crosses_total": 1.7246,
                "crosses_accurate": 0.0,
                "touches": 11.8795,
                "possession_lost": 4.4291,
                "dispossessed": 1.0899,
                "duels_lost": 1.7246,
                "aerial_lost": 0.0,
                "total_contest": 0.6953,
                "won_contest": 0.6953,
                "ball_recovery": 0.8074,
                "challenges_lost": 0.0,
                "fouls": 0.6348,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.4036,
                "tackles": 0.4036,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.8074,
                "xgot": 0.0698,
                "offsides": 0.0,
                "ball_carries": 5.1334,
                "total_progression": 46.4402,
                "progressive_carries": 1.5026,
                "shots_off_target": 0.4099
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0384,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.5 to 26.4 expected minutes (appearance prob 0.61)",
              "stats": {
                "expected_goals": 0.0848,
                "goals": 0.0884,
                "goal_rate": 0.0884,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0269,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0899,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37
              },
              "params": {
                "expected_minutes": 26.37,
                "projection_minutes": 20.47,
                "minutes_scale": 1.2883,
                "appearance_probability": 0.608
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0848,
                "goals": 0.0884,
                "goal_rate": 0.0884,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0269,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0899,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "expected_goals": 0.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.0267,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.608
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0848,
                  "after": 0.0942
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 15 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.0267,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2993,
                "fifa_rank": 1477.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.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0547,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0267,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0547,
                "scorer_weight": 0.0588,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0462,
                "finishing_factor": 1.0267,
                "appearance_weight": 0.608,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0547,
                "projected_assists": 0,
                "assist_probability": 0.0179,
                "finishing_factor": 1.0267,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0179,
                "provider_weight": 0.0145,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0144,
                "creation_factor": 0.8,
                "appearance_weight": 0.608,
                "weight_rank": 12,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Habib Diarra": {
          "player_id": 1128532,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 179,
          "market_value": 37000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0541,
            "assist_rate": 0.0669,
            "assists": 0,
            "expected_goals": 0.0716,
            "goal_rate": 0.0479,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6721,
            "minutes": 19,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 11,
            "possession_lost": 2.2771,
            "dispossessed": 0.3781,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 19,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.718,
            "bench_expected_minutes": 18.72,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0496,
            "projected_assists": 0,
            "assist_probability": 0.0378,
            "finishing_factor": 0.855,
            "creation_factor": 1.1844,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 18,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1573,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0263,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 29,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1273,
                "expected_assists": 0.0387,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 13,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1407,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 18,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.15,
                "expected_assists": 0.018,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 10,
                "accurate_pass": 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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 65,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0281,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6504,
                "expected_assists": 0.0696,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 40,
                "accurate_pass": 33,
                "key_pass": 1,
                "interceptions": 1,
                "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": 14025026,
              "match_date": "2026-04-12",
              "home_team": "Sunderland",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0445,
                "expected_assists": 0.0314,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 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": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 85,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.241,
                "expected_assists": 0.0172,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "tackles": 3,
                "tackles_won": 3,
                "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": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0217,
                "expected_assists": 0.0859,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "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": 3071,
            "combined_rank_score": 1038.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1436.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.6721,
            "source_file": "data/player_rankings.csv",
            "player_name": "Habib Diarra",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Jaidon Anthony",
                  "ranking": 3072
                },
                {
                  "player_name": "Alex Arce",
                  "ranking": 3073
                },
                {
                  "player_name": "Matías Dituro",
                  "ranking": 3074
                },
                {
                  "player_name": "Liam Delap",
                  "ranking": 3075
                },
                {
                  "player_name": "Leopold Querfeld",
                  "ranking": 3076
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.753,
          "history_matches": 22,
          "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": 22,
            "data_confidence": 0.753,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.72,
            "bench_appearance_prob": 0.718,
            "market_value_adjustment": 1.0144,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 3.333333333333333,
              "prior_reliability": 0.02
            },
            "rationale": "Bench projection scaled from XGBoost M_service (22 historical appearances) to 18.7 expected mins (appearance prob 0.72); FBref playing time empirical prior: 2.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.6222,
                "expected_assists": 0.0525,
                "assists": 0.0704,
                "assist_rate": 0.0704,
                "expected_goals": 0.0695,
                "goals": 0.0518,
                "goal_rate": 0.0518,
                "shots_on_target": 0.272,
                "total_shots": 0.7451,
                "rating": 6.6721,
                "minutes": 20.47,
                "total_pass": 7.3294,
                "accurate_pass": 6.5327,
                "duels_won": 0.8043,
                "total_long_balls": 0.5674,
                "accurate_long_balls": 0.3029,
                "total_own_half_passes": 1.9098,
                "accurate_own_half_passes": 1.9098,
                "total_opp_half_passes": 5.4196,
                "accurate_opp_half_passes": 4.6229,
                "crosses_total": 0.9629,
                "crosses_accurate": 0.2712,
                "touches": 11.8964,
                "possession_lost": 2.4547,
                "dispossessed": 0.3727,
                "duels_lost": 1.8952,
                "aerial_won": 0.3803,
                "aerial_lost": 0.3138,
                "interceptions": 0.0833,
                "tackles_won": 0.0833,
                "tackles": 0.2645,
                "clearances": 0.1959,
                "total_contest": 0.434,
                "won_contest": 0.0,
                "challenges_lost": 0.1985,
                "fouls": 0.5762,
                "fouls_drawn": 0.1595,
                "blocks": 0.0,
                "big_chances_created": 0.3564,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.068,
                "total_progression": 20.3513,
                "progressive_carries": 0.81,
                "shots_off_target": 0.4731
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.1543,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1312,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.1115,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0948,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0806,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0685,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0582,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0495,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Newcastle United",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0421,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0357,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.0965,
                  "creative_index": 0.2513,
                  "expectedGoals": 0.1228,
                  "expectedAssists": 0.0607,
                  "onTargetScoringAttempt": 0.2167
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6221931576728821,
                    "model_output": 0.6222,
                    "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.3616
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0292
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0222
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0227
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0176
                        }
                      ],
                      "others": 0.0995,
                      "total": 0.6222,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.52433
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.057205
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043818
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.042852
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.033121
                        }
                      ],
                      "others_margin": 0.174297
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05250793695449829,
                    "model_output": 0.0525,
                    "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": "possessionLostCtrl",
                          "contribution": -0.004
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0023
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0023
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0014
                        }
                      ],
                      "others": 0.0038,
                      "total": 0.0525,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551175
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.083992
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.049582
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.046693
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.029367
                        }
                      ],
                      "others_margin": 0.077517
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07038841396570206,
                    "model_output": 0.0704,
                    "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.0195
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.008
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0055
                        },
                        {
                          "name": "goalAssist",
                          "contribution": 0.0047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0046
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.0704,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.259684
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.129023
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.090386
                        },
                        {
                          "name": "goalAssist",
                          "margin": 0.072312
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.065895
                        }
                      ],
                      "others_margin": -0.031206
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06947317719459534,
                    "model_output": 0.0695,
                    "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.0415
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0072
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0055
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0059
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.004
                        }
                      ],
                      "others": -0.006,
                      "total": 0.0695,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.578177
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.128075
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.086931
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.086588
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.054609
                        }
                      ],
                      "others_margin": -0.084924
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05176728591322899,
                    "model_output": 0.0518,
                    "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.0433
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0065
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0063
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0047
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.0518,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.586689
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.113541
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.109339
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.083055
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.06857
                        }
                      ],
                      "others_margin": -0.066581
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2719569504261017,
                    "model_output": 0.272,
                    "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.1369
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0226
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0214
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0201
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0176
                        }
                      ],
                      "others": 0.0032,
                      "total": 0.272,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.549318
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.114252
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.097263
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.083526
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.067536
                        }
                      ],
                      "others_margin": 0.011668
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.745017409324646,
                    "model_output": 0.745,
                    "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.4841
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0677
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0571
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0357
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0201
                        }
                      ],
                      "others": 0.0982,
                      "total": 0.745,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484135
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.067691
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057059
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.035667
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.020072
                        }
                      ],
                      "others_margin": 0.098343
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.672055244445801,
                    "model_output": 6.6721,
                    "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.0685
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0352
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0273
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0135
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0091
                        }
                      ],
                      "others": -0.0232,
                      "total": 6.6721,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.06846
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.035187
                        },
                        {
                          "name": "rating",
                          "margin": -0.027309
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013497
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.009118
                        }
                      ],
                      "others_margin": -0.023243
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 22,
                  "role_matches": 7,
                  "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.0144, quality 0.764)",
              "stats": {
                "key_pass": 0.6312,
                "expected_assists": 0.0533,
                "assists": 0.0714,
                "assist_rate": 0.0714,
                "expected_goals": 0.0705,
                "goals": 0.0525,
                "goal_rate": 0.0525,
                "shots_on_target": 0.2759,
                "total_shots": 0.7558,
                "rating": 6.6721,
                "minutes": 20.47,
                "total_pass": 7.4349,
                "accurate_pass": 6.6268,
                "duels_won": 0.8159,
                "total_long_balls": 0.5756,
                "accurate_long_balls": 0.3073,
                "total_own_half_passes": 1.9373,
                "accurate_own_half_passes": 1.9373,
                "total_opp_half_passes": 5.4976,
                "accurate_opp_half_passes": 4.6895,
                "crosses_total": 0.9768,
                "crosses_accurate": 0.2751,
                "touches": 12.0677,
                "possession_lost": 2.49,
                "dispossessed": 0.3781,
                "duels_lost": 1.9225,
                "aerial_won": 0.3858,
                "aerial_lost": 0.3183,
                "interceptions": 0.0845,
                "tackles_won": 0.0845,
                "tackles": 0.2683,
                "clearances": 0.1987,
                "total_contest": 0.4402,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5845,
                "fouls_drawn": 0.1618,
                "blocks": 0.0,
                "big_chances_created": 0.3615,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.1266,
                "total_progression": 20.6444,
                "progressive_carries": 0.8217,
                "shots_off_target": 0.4799
              },
              "params": {
                "market_value_eur": 37000000,
                "quality_factor": 0.7641,
                "boost_factor": 1.0144,
                "reference_quality": 0.505,
                "history_matches": 22,
                "history_shrink": 0.1852,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0024)",
              "stats": {
                "key_pass": 0.6312,
                "expected_assists": 0.0533,
                "assists": 0.0731,
                "assist_rate": 0.0731,
                "expected_goals": 0.0705,
                "goals": 0.0524,
                "goal_rate": 0.0524,
                "shots_on_target": 0.2752,
                "total_shots": 0.7557,
                "rating": 6.6721,
                "minutes": 20.47,
                "total_pass": 7.4349,
                "accurate_pass": 6.6268,
                "duels_won": 0.8159,
                "total_long_balls": 0.5756,
                "accurate_long_balls": 0.3073,
                "total_own_half_passes": 1.9373,
                "accurate_own_half_passes": 1.9373,
                "total_opp_half_passes": 5.4976,
                "accurate_opp_half_passes": 4.6895,
                "crosses_total": 0.9744,
                "crosses_accurate": 0.2751,
                "touches": 12.0677,
                "possession_lost": 2.49,
                "dispossessed": 0.3781,
                "duels_lost": 1.9225,
                "aerial_won": 0.3858,
                "aerial_lost": 0.3183,
                "interceptions": 0.0843,
                "tackles_won": 0.0843,
                "tackles": 0.2683,
                "clearances": 0.1987,
                "total_contest": 0.4402,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5849,
                "fouls_drawn": 0.1614,
                "blocks": 0.0,
                "big_chances_created": 0.3615,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.1266,
                "total_progression": 20.6444,
                "progressive_carries": 0.8217,
                "shots_off_target": 0.4799
              },
              "params": {
                "blend_weight": 0.0024,
                "history_matches": 22,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2274,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Sunderland"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.5 to 18.7 expected minutes (appearance prob 0.72)",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0487,
                "assists": 0.0669,
                "assist_rate": 0.0669,
                "expected_goals": 0.0645,
                "goals": 0.0479,
                "goal_rate": 0.0479,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72
              },
              "params": {
                "expected_minutes": 18.72,
                "projection_minutes": 20.47,
                "minutes_scale": 0.9145,
                "appearance_probability": 0.718
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0487,
                "assists": 0.0669,
                "assist_rate": 0.0669,
                "expected_goals": 0.0645,
                "goals": 0.0479,
                "goal_rate": 0.0479,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.855,
                "creation_factor": 1.1844
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.718
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0645,
                  "after": 0.0716
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0487,
                  "after": 0.0541
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 16 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.855,
                "creation_factor": 1.1844,
                "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": 3071,
                "fifa_rank": 1436.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": {
                "key_pass": 0.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0496,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.855,
                "creation_factor": 1.1844,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0496,
                "scorer_weight": 0.044,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0346,
                "finishing_factor": 0.855,
                "appearance_weight": 0.718,
                "weight_rank": 10,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.5772,
                "expected_assists": 0.0541,
                "assist_rate": 0.0669,
                "assists": 0,
                "expected_goals": 0.0716,
                "goal_rate": 0.0479,
                "goals": 0,
                "shots_on_target": 0.2517,
                "total_shots": 0.6911,
                "rating": 6.6721,
                "minutes": 18.72,
                "total_pass": 6.7993,
                "accurate_pass": 6.0603,
                "duels_won": 0.7461,
                "total_long_balls": 0.5264,
                "accurate_long_balls": 0.281,
                "total_own_half_passes": 1.7717,
                "accurate_own_half_passes": 1.7717,
                "total_opp_half_passes": 5.0276,
                "accurate_opp_half_passes": 4.2886,
                "crosses_total": 0.8911,
                "crosses_accurate": 0.2516,
                "touches": 11.036,
                "possession_lost": 2.2771,
                "dispossessed": 0.3781,
                "duels_lost": 1.7581,
                "aerial_won": 0.3528,
                "aerial_lost": 0.3183,
                "interceptions": 0.0771,
                "tackles_won": 0.0771,
                "tackles": 0.2454,
                "clearances": 0.1817,
                "total_contest": 0.4026,
                "won_contest": 0.0,
                "challenges_lost": 0.2014,
                "fouls": 0.5349,
                "fouls_drawn": 0.1476,
                "blocks": 0.0,
                "big_chances_created": 0.3306,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7738,
                "total_progression": 18.8795,
                "progressive_carries": 0.7515,
                "shots_off_target": 0.4389,
                "bench_appearance_probability": 0.718,
                "bench_expected_minutes": 18.72,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0496,
                "projected_assists": 0,
                "assist_probability": 0.0378,
                "finishing_factor": 0.855,
                "creation_factor": 1.1844,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0378,
                "provider_weight": 0.046,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0455,
                "creation_factor": 1.1844,
                "appearance_weight": 0.718,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Chris Rigg": {
          "player_id": 1394089,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 177,
          "market_value": 24000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0468,
            "assist_rate": 0.0614,
            "assists": 0,
            "expected_goals": 0.0666,
            "goal_rate": 0.0587,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6417,
            "minutes": 16,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 0,
            "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": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.8857,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "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": 2,
            "total_progression": 9,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.711,
            "bench_expected_minutes": 15.8,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0458,
            "projected_assists": 0,
            "assist_probability": 0.0325,
            "finishing_factor": 0.9882,
            "creation_factor": 1.2096,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "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"
            },
            {
              "match_id": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 10,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0065,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "interceptions": 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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1091,
                "expected_assists": 0.0632,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 12,
                "accurate_pass": 11,
                "clearances": 2,
                "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": 14025030,
              "match_date": "2026-04-19",
              "home_team": "Aston Villa",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 63,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0986,
                "expected_assists": 0.0149,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 16,
                "tackles": 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": 14025026,
              "match_date": "2026-04-12",
              "home_team": "Sunderland",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 82,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0459,
                "expected_assists": 0.1449,
                "total_shots": 1,
                "total_pass": 21,
                "accurate_pass": 11,
                "key_pass": 1,
                "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"
            },
            {
              "match_id": 14024021,
              "match_date": "2026-03-22",
              "home_team": "Newcastle United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1821,
                "expected_assists": 0.5641,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 3,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0984,
                "expected_assists": 0.0137,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "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": 14023982,
              "match_date": "2026-03-03",
              "home_team": "Leeds United",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3744,
            "combined_rank_score": 1739.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 784.0,
            "sofascore_rating": 6.6333,
            "sofascore_appearances": 18.0,
            "fifa_rank": 2694.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.6417,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chris Rigg",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mislav Oršić",
                  "ranking": 3739
                },
                {
                  "player_name": "Visar Musliu",
                  "ranking": 3740
                },
                {
                  "player_name": "Christian Walton",
                  "ranking": 3741
                },
                {
                  "player_name": "Neal Maupay",
                  "ranking": 3742
                },
                {
                  "player_name": "Wilfried Gnonto",
                  "ranking": 3743
                }
              ],
              "lower": [
                {
                  "player_name": "Mads Bech Sørensen",
                  "ranking": 3745
                },
                {
                  "player_name": "Gift Links",
                  "ranking": 3746
                },
                {
                  "player_name": "Colin Coosemans",
                  "ranking": 3747
                },
                {
                  "player_name": "Davy Roef",
                  "ranking": 3748
                },
                {
                  "player_name": "Iván Balliu",
                  "ranking": 3749
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 20,
          "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": 20,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 15.8,
            "bench_appearance_prob": 0.711,
            "market_value_adjustment": 1.0098,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 10.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (20 historical appearances) to 15.8 expected mins (appearance prob 0.71); FBref playing time empirical prior: 2.0 sub appearances, 10.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3596,
                "expected_assists": 0.0279,
                "assists": 0.0406,
                "assist_rate": 0.0406,
                "expected_goals": 0.0397,
                "goals": 0.0388,
                "goal_rate": 0.0388,
                "shots_on_target": 0.1481,
                "total_shots": 0.3517,
                "rating": 6.6417,
                "minutes": 10.35,
                "total_pass": 2.1716,
                "accurate_pass": 1.4131,
                "duels_won": 0.1755,
                "total_long_balls": 0.2218,
                "accurate_long_balls": 0.1199,
                "total_own_half_passes": 0.6566,
                "accurate_own_half_passes": 0.3595,
                "total_opp_half_passes": 1.515,
                "accurate_opp_half_passes": 1.0537,
                "crosses_total": 0.2065,
                "crosses_accurate": 0.0866,
                "touches": 3.2796,
                "possession_lost": 1.2449,
                "dispossessed": 0.0,
                "duels_lost": 0.5369,
                "aerial_won": 0.1019,
                "aerial_lost": 0.0,
                "interceptions": 0.1199,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0736,
                "total_contest": 0.1199,
                "won_contest": 0.0,
                "challenges_lost": 0.417,
                "fouls": 0.0,
                "fouls_drawn": 0.0736,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.175,
                "total_progression": 6.1225,
                "progressive_carries": 0.4437,
                "shots_off_target": 0.2036
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.156,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1326,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1127,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0958,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0815,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Aston Villa",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0692,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0589,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-22",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.05,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0425,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-03",
                    "opponent": "Leeds United",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0361,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.5306,
                  "creative_index": 0.1885,
                  "expectedGoals": 0.0366,
                  "expectedAssists": 0.0521,
                  "onTargetScoringAttempt": 0.2007
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3596242070198059,
                    "model_output": 0.3596,
                    "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.3936
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0388
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.032
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0207
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0175
                        }
                      ],
                      "others": -0.059,
                      "total": 0.3596,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.587175
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.082074
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.073008
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.050203
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.042662
                        }
                      ],
                      "others_margin": -0.152081
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.027861986309289932,
                    "model_output": 0.0279,
                    "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.0391
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0064
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0031
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0015
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0013
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.0279,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.608264
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.146576
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.080014
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.042448
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.036761
                        }
                      ],
                      "others_margin": -0.210382
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.040563005954027176,
                    "model_output": 0.0406,
                    "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.022
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0071
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0063
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0052
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0036
                        }
                      ],
                      "others": -0.0076,
                      "total": 0.0406,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.299093
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.11889
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.118491
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.109718
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.078393
                        }
                      ],
                      "others_margin": -0.174696
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03965533524751663,
                    "model_output": 0.0397,
                    "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.0448
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0064
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0044
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0018
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0016
                        }
                      ],
                      "others": 0.0011,
                      "total": 0.0397,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.643666
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137829
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.107496
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.046513
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.043382
                        }
                      ],
                      "others_margin": 0.024509
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03879848122596741,
                    "model_output": 0.0388,
                    "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.0464
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0076
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0042
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.003
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0026
                        }
                      ],
                      "others": -0.0002,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.644106
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.160266
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.099916
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.078285
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.068525
                        }
                      ],
                      "others_margin": -0.008911
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14806294441223145,
                    "model_output": 0.1481,
                    "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.1414
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0437
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0115
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0043
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0035
                        }
                      ],
                      "others": 0.0199,
                      "total": 0.1481,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.573619
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.27359
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086728
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.033024
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.027023
                        }
                      ],
                      "others_margin": 0.144857
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3516359329223633,
                    "model_output": 0.3516,
                    "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.3789
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0465
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0214
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0214
                        }
                      ],
                      "others": 0.0369,
                      "total": 0.3516,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.378932
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.207561
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.046507
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.021439
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.021367
                        }
                      ],
                      "others_margin": 0.036978
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.641719341278076,
                    "model_output": 6.6417,
                    "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.0609
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0521
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0308
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0178
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0166
                        }
                      ],
                      "others": -0.029,
                      "total": 6.6417,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.060894
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.052092
                        },
                        {
                          "name": "rating",
                          "margin": -0.030788
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.017803
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.016639
                        }
                      ],
                      "others_margin": -0.028934
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 20,
                  "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.0098, quality 0.669)",
              "stats": {
                "key_pass": 0.3631,
                "expected_assists": 0.0281,
                "assists": 0.041,
                "assist_rate": 0.041,
                "expected_goals": 0.04,
                "goals": 0.0392,
                "goal_rate": 0.0392,
                "shots_on_target": 0.1495,
                "total_shots": 0.3551,
                "rating": 6.6417,
                "minutes": 10.35,
                "total_pass": 2.1929,
                "accurate_pass": 1.4269,
                "duels_won": 0.1772,
                "total_long_balls": 0.224,
                "accurate_long_balls": 0.1211,
                "total_own_half_passes": 0.663,
                "accurate_own_half_passes": 0.363,
                "total_opp_half_passes": 1.5298,
                "accurate_opp_half_passes": 1.064,
                "crosses_total": 0.2085,
                "crosses_accurate": 0.0874,
                "touches": 3.3117,
                "possession_lost": 1.2571,
                "dispossessed": 0.0,
                "duels_lost": 0.5422,
                "aerial_won": 0.1029,
                "aerial_lost": 0.0,
                "interceptions": 0.1211,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0743,
                "total_contest": 0.1211,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.0743,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1865,
                "total_progression": 6.1825,
                "progressive_carries": 0.448,
                "shots_off_target": 0.2056
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0098,
                "reference_quality": 0.505,
                "history_matches": 20,
                "history_shrink": 0.2,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0017)",
              "stats": {
                "key_pass": 0.3631,
                "expected_assists": 0.0281,
                "assists": 0.0409,
                "assist_rate": 0.0409,
                "expected_goals": 0.04,
                "goals": 0.0391,
                "goal_rate": 0.0391,
                "shots_on_target": 0.1492,
                "total_shots": 0.3545,
                "rating": 6.6417,
                "minutes": 10.35,
                "total_pass": 2.1929,
                "accurate_pass": 1.4269,
                "duels_won": 0.1772,
                "total_long_balls": 0.224,
                "accurate_long_balls": 0.1211,
                "total_own_half_passes": 0.663,
                "accurate_own_half_passes": 0.363,
                "total_opp_half_passes": 1.5298,
                "accurate_opp_half_passes": 1.064,
                "crosses_total": 0.2081,
                "crosses_accurate": 0.0874,
                "touches": 3.3117,
                "possession_lost": 1.2571,
                "dispossessed": 0.0,
                "duels_lost": 0.5422,
                "aerial_won": 0.1029,
                "aerial_lost": 0.0,
                "interceptions": 0.1209,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0743,
                "total_contest": 0.1211,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.0742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1865,
                "total_progression": 6.1825,
                "progressive_carries": 0.448,
                "shots_off_target": 0.2056
              },
              "params": {
                "blend_weight": 0.0017,
                "history_matches": 20,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.115,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Sunderland"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 10.3 to 15.8 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0421,
                "assists": 0.0614,
                "assist_rate": 0.0614,
                "expected_goals": 0.06,
                "goals": 0.0587,
                "goal_rate": 0.0587,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8
              },
              "params": {
                "expected_minutes": 15.8,
                "projection_minutes": 10.35,
                "minutes_scale": 1.5,
                "appearance_probability": 0.711
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0421,
                "assists": 0.0614,
                "assist_rate": 0.0614,
                "expected_goals": 0.06,
                "goals": 0.0587,
                "goal_rate": 0.0587,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.9882,
                "creation_factor": 1.2096
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.711
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.06,
                  "after": 0.0666
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 18 by projected rating, fifa_overall 74.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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": 0.9882,
                "creation_factor": 1.2096,
                "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": 3744,
                "fifa_rank": 2694.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.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.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0458,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9882,
                "creation_factor": 1.2096,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0458,
                "scorer_weight": 0.0468,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0368,
                "finishing_factor": 0.9882,
                "appearance_weight": 0.711,
                "weight_rank": 9,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.5446,
                "expected_assists": 0.0468,
                "assist_rate": 0.0614,
                "assists": 0,
                "expected_goals": 0.0666,
                "goal_rate": 0.0587,
                "goals": 0,
                "shots_on_target": 0.2238,
                "total_shots": 0.5322,
                "rating": 6.6417,
                "minutes": 15.8,
                "total_pass": 3.2893,
                "accurate_pass": 2.1404,
                "duels_won": 0.2658,
                "total_long_balls": 0.336,
                "accurate_long_balls": 0.1817,
                "total_own_half_passes": 0.9945,
                "accurate_own_half_passes": 0.5445,
                "total_opp_half_passes": 2.2947,
                "accurate_opp_half_passes": 1.596,
                "crosses_total": 0.3122,
                "crosses_accurate": 0.1311,
                "touches": 4.9676,
                "possession_lost": 1.8857,
                "dispossessed": 0.0,
                "duels_lost": 0.8133,
                "aerial_won": 0.1544,
                "aerial_lost": 0.0,
                "interceptions": 0.1813,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1115,
                "total_contest": 0.1817,
                "won_contest": 0.0,
                "challenges_lost": 0.4211,
                "fouls": 0.0,
                "fouls_drawn": 0.1113,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7798,
                "total_progression": 9.2737,
                "progressive_carries": 0.672,
                "shots_off_target": 0.3084,
                "bench_appearance_probability": 0.711,
                "bench_expected_minutes": 15.8,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0458,
                "projected_assists": 0,
                "assist_probability": 0.0325,
                "finishing_factor": 0.9882,
                "creation_factor": 1.2096,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0325,
                "provider_weight": 0.0402,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0398,
                "creation_factor": 1.2096,
                "appearance_weight": 0.711,
                "weight_rank": 8,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Malick Fofana": {
          "player_id": 1195784,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 39,
          "height": 169,
          "market_value": 29000000,
          "stats": {
            "expected_goals": 0.0942,
            "goal_rate": 0.0884,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0299,
            "key_pass": 0,
            "rating": 6.673,
            "minutes": 26,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 5.706,
            "dispossessed": 1.0899,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.0999,
            "offsides": 0,
            "ball_carries": 7,
            "total_progression": 60,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.608,
            "bench_expected_minutes": 26.37,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0547,
            "projected_assists": 0,
            "assist_probability": 0.0179,
            "finishing_factor": 1.0267,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3875,
                "expected_assists": 0.0056,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 8,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 5,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2993,
            "combined_rank_score": 994.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 4.0,
            "fifa_rank": 1477.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.673,
            "source_file": "data/player_rankings.csv",
            "player_name": "Malick Fofana",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "José Alí Gutiérrez",
                  "ranking": 2988
                },
                {
                  "player_name": "Artem Potapov",
                  "ranking": 2989
                },
                {
                  "player_name": "Jayce Olivero",
                  "ranking": 2990
                },
                {
                  "player_name": "Felix Oberwaditzer",
                  "ranking": 2991
                },
                {
                  "player_name": "Kieran Tierney",
                  "ranking": 2992
                }
              ],
              "lower": [
                {
                  "player_name": "Kai Mauro",
                  "ranking": 2994
                },
                {
                  "player_name": "Rubén García",
                  "ranking": 2995
                },
                {
                  "player_name": "Nikola Mirković",
                  "ranking": 2996
                },
                {
                  "player_name": "Alvaro Abarzua",
                  "ranking": 2997
                },
                {
                  "player_name": "Felipe Salomoni",
                  "ranking": 2998
                }
              ]
            }
          },
          "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": 26.37159379857936,
            "bench_appearance_prob": 0.6077997181172436,
            "market_value_adjustment": 1.0384,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 26.4 expected mins (appearance prob 0.61)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0634,
                "goals": 0.066,
                "goal_rate": 0.066,
                "shots_on_target": 0.2812,
                "total_shots": 0.6759,
                "expected_assists": 0.0202,
                "key_pass": 0.2538,
                "rating": 6.673,
                "minutes": 20.47,
                "total_pass": 5.5053,
                "accurate_pass": 4.3391,
                "duels_won": 1.0583,
                "total_long_balls": 0.3304,
                "accurate_long_balls": 0.3304,
                "total_opp_half_passes": 3.4966,
                "accurate_opp_half_passes": 3.1079,
                "crosses_total": 1.6608,
                "crosses_accurate": 0.0,
                "touches": 11.4402,
                "possession_lost": 4.2653,
                "dispossessed": 1.0496,
                "duels_lost": 1.6608,
                "aerial_lost": 0.0,
                "total_contest": 0.6696,
                "won_contest": 0.6696,
                "ball_recovery": 0.7775,
                "challenges_lost": 0.0,
                "fouls": 0.6113,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.3887,
                "tackles": 0.3887,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7775,
                "xgot": 0.0672,
                "offsides": 0.0,
                "ball_carries": 4.9436,
                "total_progression": 44.7228,
                "progressive_carries": 1.447,
                "shots_off_target": 0.3947
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1506,
                  "totalOppositionHalfPasses": 3.4966,
                  "accurateOppositionHalfPasses": 3.1079,
                  "accuratePass": 4.3392,
                  "totalShots": 1.1662
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06335057318210602,
                    "model_output": 0.0634,
                    "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.0923
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0126
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0069
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0056
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.025,
                      "total": 0.0634,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.62334
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.125558
                        },
                        {
                          "name": "goals",
                          "margin": -0.076691
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.06254
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.049072
                        }
                      ],
                      "others_margin": -0.332271
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06603369861841202,
                    "model_output": 0.066,
                    "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.0946
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0192
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.01
                        },
                        {
                          "name": "goals",
                          "contribution": -0.007
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0064
                        }
                      ],
                      "others": -0.0133,
                      "total": 0.066,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.624374
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.193595
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.11821
                        },
                        {
                          "name": "goals",
                          "margin": -0.092113
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.084256
                        }
                      ],
                      "others_margin": -0.182691
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2812325954437256,
                    "model_output": 0.2812,
                    "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.222
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0219
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0206
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0136
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0117
                        }
                      ],
                      "others": -0.0306,
                      "total": 0.2812,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.533518
                        },
                        {
                          "name": "goals",
                          "margin": -0.072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.068053
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.044302
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.038303
                        }
                      ],
                      "others_margin": -0.103314
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6759392023086548,
                    "model_output": 0.6759,
                    "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.5531
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0932
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0676
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0625
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0436
                        }
                      ],
                      "others": -0.1052,
                      "total": 0.6759,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.553127
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.093244
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.067605
                        },
                        {
                          "name": "goals",
                          "margin": -0.062534
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.043644
                        }
                      ],
                      "others_margin": -0.105113
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.020170215517282486,
                    "model_output": 0.0202,
                    "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.0228
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0106
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0044
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0021
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0025,
                      "total": 0.0202,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.437054
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.294743
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.152802
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.080727
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.071791
                        }
                      ],
                      "others_margin": -0.121976
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2538151443004608,
                    "model_output": 0.2538,
                    "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.3033
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0308
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.027
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0194
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0159
                        }
                      ],
                      "others": -0.0238,
                      "total": 0.2538,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.597933
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.086859
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.082655
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.064001
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.055587
                        }
                      ],
                      "others_margin": -0.089556
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.672970294952393,
                    "model_output": 6.673,
                    "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.0617
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0286
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0221
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0187
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0143
                        }
                      ],
                      "others": -0.0296,
                      "total": 6.673,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.061655
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.028649
                        },
                        {
                          "name": "rating",
                          "margin": -0.022112
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.018726
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.014312
                        }
                      ],
                      "others_margin": -0.029657
                    }
                  }
                ],
                "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.0384, quality 0.710)",
              "stats": {
                "expected_goals": 0.0658,
                "goals": 0.0686,
                "goal_rate": 0.0686,
                "shots_on_target": 0.292,
                "total_shots": 0.7019,
                "expected_assists": 0.0209,
                "key_pass": 0.2636,
                "rating": 6.673,
                "minutes": 20.47,
                "total_pass": 5.7167,
                "accurate_pass": 4.5057,
                "duels_won": 1.0989,
                "total_long_balls": 0.3431,
                "accurate_long_balls": 0.3431,
                "total_opp_half_passes": 3.6309,
                "accurate_opp_half_passes": 3.2272,
                "crosses_total": 1.7246,
                "crosses_accurate": 0.0,
                "touches": 11.8795,
                "possession_lost": 4.4291,
                "dispossessed": 1.0899,
                "duels_lost": 1.7246,
                "aerial_lost": 0.0,
                "total_contest": 0.6953,
                "won_contest": 0.6953,
                "ball_recovery": 0.8074,
                "challenges_lost": 0.0,
                "fouls": 0.6348,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.4036,
                "tackles": 0.4036,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.8074,
                "xgot": 0.0698,
                "offsides": 0.0,
                "ball_carries": 5.1334,
                "total_progression": 46.4402,
                "progressive_carries": 1.5026,
                "shots_off_target": 0.4099
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0384,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.5 to 26.4 expected minutes (appearance prob 0.61)",
              "stats": {
                "expected_goals": 0.0848,
                "goals": 0.0884,
                "goal_rate": 0.0884,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0269,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0899,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37
              },
              "params": {
                "expected_minutes": 26.37,
                "projection_minutes": 20.47,
                "minutes_scale": 1.2883,
                "appearance_probability": 0.608
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0848,
                "goals": 0.0884,
                "goal_rate": 0.0884,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0269,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0899,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "expected_goals": 0.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.0267,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.608
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0848,
                  "after": 0.0942
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 15 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.0267,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2993,
                "fifa_rank": 1477.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.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0547,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0267,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0547,
                "scorer_weight": 0.0588,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0462,
                "finishing_factor": 1.0267,
                "appearance_weight": 0.608,
                "weight_rank": 7,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.0942,
                "goal_rate": 0.0884,
                "goals": 0,
                "shots_on_target": 0.3762,
                "total_shots": 0.9043,
                "expected_assists": 0.0299,
                "key_pass": 0.3396,
                "rating": 6.673,
                "minutes": 26.37,
                "total_pass": 7.3649,
                "accurate_pass": 5.8047,
                "duels_won": 1.4157,
                "total_long_balls": 0.442,
                "accurate_long_balls": 0.442,
                "total_opp_half_passes": 4.6777,
                "accurate_opp_half_passes": 4.1576,
                "crosses_total": 2.2218,
                "crosses_accurate": 0.0,
                "touches": 15.3044,
                "possession_lost": 5.706,
                "dispossessed": 1.0899,
                "duels_lost": 2.2218,
                "aerial_lost": 0.0,
                "total_contest": 0.8958,
                "won_contest": 0.8958,
                "ball_recovery": 1.0402,
                "challenges_lost": 0.0,
                "fouls": 0.8178,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.52,
                "tackles": 0.52,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 1.0402,
                "xgot": 0.0999,
                "offsides": 0.0,
                "ball_carries": 6.6134,
                "total_progression": 59.8291,
                "progressive_carries": 1.9358,
                "shots_off_target": 0.5281,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 26.37,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0547,
                "projected_assists": 0,
                "assist_probability": 0.0179,
                "finishing_factor": 1.0267,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0179,
                "provider_weight": 0.0145,
                "squad_weight_total": 1.0119,
                "weight_share": 0.0144,
                "creation_factor": 0.8,
                "appearance_weight": 0.608,
                "weight_rank": 12,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Brian Brobbey": {
          "player_id": 910048,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 180,
          "market_value": 42000000,
          "stats": {
            "expected_goals": 0.2586,
            "goal_rate": 0.3465,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0313,
            "key_pass": 0,
            "rating": 6.8489,
            "minutes": 27,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 3.4409,
            "dispossessed": 0.4723,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.097,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1962,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 4,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.363,
            "bench_expected_minutes": 26.69,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.737,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0827,
            "projected_assists": 0,
            "assist_probability": 0.0112,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363867,
              "match_date": "2026-09-20",
              "home_team": "Manchester City",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 9.8,
                "goal_rate": 3.0,
                "goals": 3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 2.3467,
                "expected_assists": 0.0354,
                "total_shots": 5,
                "shots_on_target": 4,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 15,
                "key_pass": 1,
                "aerial_won": 4,
                "duels_won": 10
              },
              "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": 16363646,
              "match_date": "2026-09-12",
              "home_team": "Sunderland",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0096,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "key_pass": 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": 16363260,
              "match_date": "2026-09-05",
              "home_team": "Brentford",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2617,
                "expected_assists": 0.0611,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 15,
                "key_pass": 3,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Fulham",
              "stats": {
                "minutes": 64,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0313,
                "expected_assists": 0.003,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "clearances": 1,
                "aerial_won": 4,
                "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": 16363636,
              "match_date": "2026-08-22",
              "home_team": "Ipswich Town",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 67,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2977,
                "expected_assists": 0.0016,
                "total_shots": 2,
                "shots_on_target": 1,
                "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": 14023966,
              "match_date": "2026-05-24",
              "home_team": "Sunderland",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 61,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.9054,
                "expected_assists": 0.0063,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 9,
                "accurate_pass": 8,
                "clearances": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Everton",
              "stats": {
                "minutes": 77,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3287,
                "expected_assists": 0.0057,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "tackles": 1,
                "clearances": 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": 14023938,
              "match_date": "2026-05-09",
              "home_team": "Sunderland",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1772,
                "expected_assists": 0.1063,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 15,
                "key_pass": 3,
                "clearances": 2,
                "aerial_won": 4,
                "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": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 72,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0598,
                "expected_assists": 0.0693,
                "total_shots": 1,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 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": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sunderland",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.013,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2748,
            "combined_rank_score": 950.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 789.0,
            "sofascore_rating": 6.629,
            "sofascore_appearances": 31.0,
            "fifa_rank": 1112.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8489,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brian Brobbey",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jon Karrikaburu",
                  "ranking": 2743
                },
                {
                  "player_name": "Cristopher Barrera",
                  "ranking": 2744
                },
                {
                  "player_name": "Vilius Armalas",
                  "ranking": 2745
                },
                {
                  "player_name": "Egor Parkhomenko",
                  "ranking": 2746
                },
                {
                  "player_name": "Ruiz de Galarreta",
                  "ranking": 2747
                }
              ],
              "lower": [
                {
                  "player_name": "Matías Campos López",
                  "ranking": 2749
                },
                {
                  "player_name": "Antonín Kinský",
                  "ranking": 2750
                },
                {
                  "player_name": "Austin Ludwik",
                  "ranking": 2751
                },
                {
                  "player_name": "Tae-in Jung",
                  "ranking": 2752
                },
                {
                  "player_name": "Mauro Icardi",
                  "ranking": 2753
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.764,
          "history_matches": 36,
          "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": 36,
            "data_confidence": 0.764,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.691976588065373,
            "bench_appearance_prob": 0.363,
            "market_value_adjustment": 1.0105,
            "fbref_prior_metrics": {
              "squad": "Sunderland",
              "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.0933
            },
            "rationale": "Bench projection scaled from XGBoost F_service (36 historical appearances) to 26.7 expected mins (appearance prob 0.36); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2064,
                "goals": 0.3095,
                "goal_rate": 0.3095,
                "shots_on_target": 0.7121,
                "total_shots": 1.3778,
                "expected_assists": 0.025,
                "key_pass": 0.2927,
                "rating": 6.8489,
                "minutes": 23.92,
                "total_pass": 3.3084,
                "accurate_pass": 2.4997,
                "duels_won": 1.7202,
                "total_long_balls": 0.0626,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.2654,
                "accurate_opp_half_passes": 1.5303,
                "crosses_total": 0.1952,
                "crosses_accurate": 0.0,
                "touches": 8.1467,
                "possession_lost": 3.0516,
                "dispossessed": 0.4674,
                "duels_lost": 2.1296,
                "aerial_lost": 1.1252,
                "total_contest": 0.1659,
                "won_contest": 0.0,
                "ball_recovery": 0.9526,
                "challenges_lost": 0.0626,
                "fouls": 0.4283,
                "fouls_drawn": 0.3794,
                "assists": 0.0866,
                "assist_rate": 0.0866,
                "interceptions": 0.0,
                "tackles_won": 0.1199,
                "tackles": 0.3475,
                "clearances": 0.3979,
                "blocks": 0.0866,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1659,
                "xgot": 0.1567,
                "offsides": 0.1825,
                "ball_carries": 1.5405,
                "total_progression": 3.3486,
                "shots_off_target": 0.6657
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 9.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Fulham",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Ipswich Town",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Chelsea",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Everton",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Wolverhampton",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.5557,
                  "totalOppositionHalfPasses": 9.9177,
                  "accurateOppositionHalfPasses": 7.1491,
                  "accuratePass": 10.2995,
                  "totalShots": 2.1064
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.20640966296195984,
                    "model_output": 0.2064,
                    "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.0834
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.027
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0154
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0124
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0103
                        }
                      ],
                      "others": 0.0257,
                      "total": 0.2064,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.543229
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.210052
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.102806
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.075449
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.058884
                        }
                      ],
                      "others_margin": 0.132824
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.3095308542251587,
                    "model_output": 0.3095,
                    "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.0759
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0432
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0346
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0137
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0119
                        }
                      ],
                      "others": 0.0783,
                      "total": 0.3095,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.466068
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.291351
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.184059
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.064639
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.052721
                        }
                      ],
                      "others_margin": 0.291465
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7120913863182068,
                    "model_output": 0.7121,
                    "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.1976
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0697
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0407
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0341
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0336
                        }
                      ],
                      "others": 0.1946,
                      "total": 0.7121,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.458756
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.186782
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.094918
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.073042
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.067164
                        }
                      ],
                      "others_margin": 0.319095
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.3777797222137451,
                    "model_output": 1.3778,
                    "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.6713
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1702
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.124
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.1042
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0907
                        }
                      ],
                      "others": 0.1813,
                      "total": 1.3778,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.671328
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.170227
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.123982
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.104156
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.090745
                        }
                      ],
                      "others_margin": 0.18129
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.025048714131116867,
                    "model_output": 0.025,
                    "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.0047
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0041
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0035
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.025,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.342382
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.108773
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.105987
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.100293
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.065984
                        }
                      ],
                      "others_margin": -0.21906
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2926689684391022,
                    "model_output": 0.2927,
                    "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.2735
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0251
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0198
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0159
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.011
                        }
                      ],
                      "others": -0.036,
                      "total": 0.2927,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.520484
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.064717
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.054309
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.045732
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.033031
                        }
                      ],
                      "others_margin": -0.11588
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.848901271820068,
                    "model_output": 6.8489,
                    "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": "passValueNormalized",
                          "contribution": 0.1119
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0711
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0213
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.018
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0173
                        }
                      ],
                      "others": -0.0107,
                      "total": 6.8489,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": 0.111912
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.071147
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.021301
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.018023
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.01728
                        }
                      ],
                      "others_margin": -0.010631
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 36,
                  "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.0105, quality 0.791)",
              "stats": {
                "expected_goals": 0.2086,
                "goals": 0.3128,
                "goal_rate": 0.3128,
                "shots_on_target": 0.7196,
                "total_shots": 1.3923,
                "expected_assists": 0.0253,
                "key_pass": 0.2957,
                "rating": 6.8489,
                "minutes": 23.92,
                "total_pass": 3.3431,
                "accurate_pass": 2.5259,
                "duels_won": 1.7383,
                "total_long_balls": 0.0633,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.2892,
                "accurate_opp_half_passes": 1.5464,
                "crosses_total": 0.1972,
                "crosses_accurate": 0.0,
                "touches": 8.2322,
                "possession_lost": 3.0836,
                "dispossessed": 0.4723,
                "duels_lost": 2.152,
                "aerial_lost": 1.137,
                "total_contest": 0.1676,
                "won_contest": 0.0,
                "ball_recovery": 0.9626,
                "challenges_lost": 0.0633,
                "fouls": 0.4328,
                "fouls_drawn": 0.3834,
                "assists": 0.0875,
                "assist_rate": 0.0875,
                "interceptions": 0.0,
                "tackles_won": 0.1212,
                "tackles": 0.3511,
                "clearances": 0.4021,
                "blocks": 0.0875,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1676,
                "xgot": 0.1583,
                "offsides": 0.1844,
                "ball_carries": 1.5567,
                "total_progression": 3.3838,
                "shots_off_target": 0.6727
              },
              "params": {
                "market_value_eur": 42000000,
                "quality_factor": 0.7909,
                "boost_factor": 1.0105,
                "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.0074)",
              "stats": {
                "expected_goals": 0.2086,
                "goals": 0.3105,
                "goal_rate": 0.3105,
                "shots_on_target": 0.7156,
                "total_shots": 1.3861,
                "expected_assists": 0.0253,
                "key_pass": 0.2957,
                "rating": 6.8489,
                "minutes": 23.92,
                "total_pass": 3.3431,
                "accurate_pass": 2.5259,
                "duels_won": 1.7383,
                "total_long_balls": 0.0633,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.2892,
                "accurate_opp_half_passes": 1.5464,
                "crosses_total": 0.1957,
                "crosses_accurate": 0.0,
                "touches": 8.2322,
                "possession_lost": 3.0836,
                "dispossessed": 0.4723,
                "duels_lost": 2.152,
                "aerial_lost": 1.137,
                "total_contest": 0.1676,
                "won_contest": 0.0,
                "ball_recovery": 0.9626,
                "challenges_lost": 0.0633,
                "fouls": 0.4338,
                "fouls_drawn": 0.382,
                "assists": 0.0869,
                "assist_rate": 0.0869,
                "interceptions": 0.0,
                "tackles_won": 0.1203,
                "tackles": 0.3511,
                "clearances": 0.4021,
                "blocks": 0.0875,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1676,
                "xgot": 0.1583,
                "offsides": 0.1872,
                "ball_carries": 1.5567,
                "total_progression": 3.3838,
                "shots_off_target": 0.6727
              },
              "params": {
                "blend_weight": 0.0074,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2658,
                "prior_reliability": 0.0933,
                "competition": "Premier League",
                "squad": "Sunderland"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.3923,
                  "after": 1.3861
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.9 to 26.7 expected minutes (appearance prob 0.36)",
              "stats": {
                "expected_goals": 0.2328,
                "goals": 0.3465,
                "goal_rate": 0.3465,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0282,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assists": 0.097,
                "assist_rate": 0.097,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1766,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "expected_minutes": 26.69,
                "projection_minutes": 23.92,
                "minutes_scale": 1.1159,
                "appearance_probability": 0.363
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2328,
                "goals": 0.3465,
                "goal_rate": 0.3465,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0282,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assists": 0.097,
                "assist_rate": 0.097,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1766,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.36 (squad xG sum 1.2208, xG scale 1.1107, xA scale 1.1107, team xA 1.05 = 0.77 x lambda)",
              "stats": {
                "expected_goals": 0.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.25
              },
              "params": {
                "team_lambda": 1.356,
                "squad_xg_sum": 1.2208,
                "squad_xa_sum": 0.945,
                "team_expected_assists": 1.0496,
                "team_xa_to_xg_ratio": 0.7741,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1107,
                "xa_scale": 1.1107,
                "opponent_lambda": 1.524,
                "scoreline_reset": true,
                "appearance_weight": 0.363
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2328,
                  "after": 0.2586
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 4 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "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.25,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2748,
                "fifa_rank": 1112.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.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0827,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0827,
                "scorer_weight": 0.1173,
                "squad_weight_total": 1.2716,
                "weight_share": 0.0923,
                "finishing_factor": 1.25,
                "appearance_weight": 0.363,
                "weight_rank": 5,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Wilson Isidor",
                    "weight": 0.2561,
                    "already": 0,
                    "effective_weight": 0.2561,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.2324
                  }
                ]
              }
            },
            {
              "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.2586,
                "goal_rate": 0.3465,
                "goals": 0,
                "shots_on_target": 0.7985,
                "total_shots": 1.5492,
                "expected_assists": 0.0313,
                "key_pass": 0.33,
                "rating": 6.8489,
                "minutes": 26.69,
                "total_pass": 3.7305,
                "accurate_pass": 2.8186,
                "duels_won": 1.9397,
                "total_long_balls": 0.0706,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 2.5545,
                "accurate_opp_half_passes": 1.7256,
                "crosses_total": 0.2184,
                "crosses_accurate": 0.0,
                "touches": 9.1862,
                "possession_lost": 3.4409,
                "dispossessed": 0.4723,
                "duels_lost": 2.4014,
                "aerial_lost": 1.137,
                "total_contest": 0.187,
                "won_contest": 0.0,
                "ball_recovery": 1.0742,
                "challenges_lost": 0.0633,
                "fouls": 0.4841,
                "fouls_drawn": 0.4263,
                "assist_rate": 0.097,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1342,
                "tackles": 0.3918,
                "clearances": 0.4487,
                "blocks": 0.0976,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.187,
                "xgot": 0.1962,
                "offsides": 0.1872,
                "ball_carries": 1.7371,
                "total_progression": 3.7759,
                "shots_off_target": 0.7507,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.737,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0827,
                "projected_assists": 0,
                "assist_probability": 0.0112,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0112,
                "provider_weight": 0.0142,
                "squad_weight_total": 1.0119,
                "weight_share": 0.014,
                "creation_factor": 1.25,
                "appearance_weight": 0.363,
                "weight_rank": 13,
                "eligible_players": 14,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thomas Meunier",
                    "weight": 0.1964,
                    "already": 0,
                    "effective_weight": 0.1964,
                    "runner_up": "Enzo Le Fée",
                    "runner_up_effective_weight": 0.1623,
                    "blocked_own_goal": [
                      "Wilson Isidor"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.36,
        "expected_assists": 1.05,
        "total_shots": 15,
        "shots_on_target": 4,
        "total_passes": 392,
        "interceptions": 9,
        "tackles": 14,
        "avg_rating": 6.84,
        "possession_estimated_pct": 50.2,
        "pressing_actions_per_90": 7.7
      }
    },
    "Brighton": {
      "formation": "4-2-3-1",
      "players": {
        "Charalampos Kostoulas": {
          "player_id": 1416535,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 19,
          "height": 185,
          "market_value": 27000000,
          "stats": {
            "expected_goals": 0.3168,
            "goal_rate": 0.3455,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0745,
            "key_pass": 1,
            "rating": 6.8662,
            "minutes": 81,
            "total_pass": 19,
            "accurate_pass": 14,
            "duels_won": 5,
            "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": 38,
            "possession_lost": 12.5309,
            "dispossessed": 1.7707,
            "duels_lost": 8,
            "aerial_lost": 3,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.348,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.4189,
            "offsides": 1,
            "ball_carries": 11,
            "total_progression": 36,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0586,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.24,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Kevin Danso, Thomas Meunier",
            "opponent_faced": "Kevin Danso, Thomas Meunier",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.2715,
            "projected_assists": 0,
            "assist_probability": 0.0718,
            "finishing_factor": 1.1834,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 76,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1825,
                "expected_assists": 0.01,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 18,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 84,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.39,
                "expected_assists": 0.0134,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 11,
                "accurate_pass": 6,
                "tackles": 1,
                "clearances": 2,
                "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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4335,
                "expected_assists": 0.0244,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 22,
                "accurate_pass": 18,
                "tackles": 1,
                "clearances": 3,
                "aerial_won": 3,
                "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 80,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.169,
                "expected_assists": 0.0202,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 23,
                "accurate_pass": 19,
                "key_pass": 1,
                "aerial_won": 3,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 26,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1765,
                "expected_assists": 0.0015,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 6,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 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": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 31,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1867,
                "expected_assists": 0.0847,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 2,
                "aerial_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 8,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0255,
                "expected_assists": 0.1821,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "aerial_won": 3,
                "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": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "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": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 10,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0997,
                "expected_assists": 0.0004,
                "total_shots": 1,
                "shots_on_target": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0997,
                "expected_assists": 0.0456,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 3996,
            "combined_rank_score": 1977.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 21.0,
            "fifa_rank": 3256.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8662,
            "source_file": "data/player_rankings.csv",
            "player_name": "Charalampos Kostoulas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ayrton Costa",
                  "ranking": 3991
                },
                {
                  "player_name": "Carreira",
                  "ranking": 3992
                },
                {
                  "player_name": "Valera",
                  "ranking": 3993
                },
                {
                  "player_name": "Mert Müldür",
                  "ranking": 3994
                },
                {
                  "player_name": "Tim Ream",
                  "ranking": 3995
                }
              ],
              "lower": [
                {
                  "player_name": "Junior Sornoza",
                  "ranking": 3997
                },
                {
                  "player_name": "Tai Baribo",
                  "ranking": 3998
                },
                {
                  "player_name": "Claudio Echeverri",
                  "ranking": 3999
                },
                {
                  "player_name": "Turrientes",
                  "ranking": 4000
                },
                {
                  "player_name": "Agirrezabala",
                  "ranking": 4001
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.762,
          "history_matches": 26,
          "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": 26,
            "data_confidence": 0.762,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0092,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 106.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.55,
              "shots_on_target_pct": 33.3,
              "prior_reliability": 0.08
            },
            "rationale": "XGBoost regressor (F_service) evaluated 26 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Brighton, rel: 0.08, 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.266,
                "goals": 0.3262,
                "goal_rate": 0.3262,
                "shots_on_target": 0.8187,
                "total_shots": 2.2134,
                "expected_assists": 0.0662,
                "key_pass": 0.8099,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.5997,
                "accurate_pass": 13.7959,
                "duels_won": 4.9828,
                "total_long_balls": 0.6884,
                "accurate_long_balls": 0.3219,
                "total_opp_half_passes": 13.0049,
                "accurate_opp_half_passes": 9.0292,
                "crosses_total": 0.8036,
                "crosses_accurate": 0.0,
                "touches": 37.992,
                "possession_lost": 12.4167,
                "dispossessed": 1.7546,
                "duels_lost": 7.7727,
                "aerial_lost": 2.5427,
                "total_contest": 3.0494,
                "won_contest": 0.9815,
                "ball_recovery": 3.9481,
                "challenges_lost": 0.5144,
                "fouls": 1.0978,
                "fouls_drawn": 1.4167,
                "assists": 0.3477,
                "assist_rate": 0.3477,
                "interceptions": 0.0,
                "tackles_won": 0.3394,
                "tackles": 1.0847,
                "clearances": 1.4154,
                "blocks": 0.0,
                "big_chances_created": 0.1069,
                "big_chances_missed": 0.6335,
                "xgot": 0.3517,
                "offsides": 0.9355,
                "ball_carries": 10.76,
                "total_progression": 36.0117,
                "progressive_carries": 1.8193,
                "shots_off_target": 1.3947
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0795,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0675,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0574,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0488,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0415,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0353,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.1993,
                  "totalOppositionHalfPasses": 9.2085,
                  "accurateOppositionHalfPasses": 6.5025,
                  "accuratePass": 9.1092,
                  "totalShots": 2.0643
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.2660079300403595,
                    "model_output": 0.266,
                    "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.0665
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0265
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.018
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0126
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0113
                        }
                      ],
                      "others": -0.0149,
                      "total": 0.266,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.288476
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.105345
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.072819
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.047933
                        },
                        {
                          "name": "goals",
                          "margin": 0.041193
                        }
                      ],
                      "others_margin": -0.054628
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.32624050974845886,
                    "model_output": 0.3262,
                    "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.0602
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0261
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0165
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0163
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0145
                        }
                      ],
                      "others": 0.0215,
                      "total": 0.3262,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.258883
                        },
                        {
                          "name": "goals",
                          "margin": 0.094272
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.055444
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.054733
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.0488
                        }
                      ],
                      "others_margin": 0.068077
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8186783194541931,
                    "model_output": 0.8187,
                    "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.1905
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0516
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0506
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0422
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0219
                        }
                      ],
                      "others": 0.0281,
                      "total": 0.8187,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.303645
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.073531
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.072249
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.05648
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.028031
                        }
                      ],
                      "others_margin": 0.034856
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.21333384513855,
                    "model_output": 2.2133,
                    "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.5205
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1971
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0673
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0527
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.032
                        }
                      ],
                      "others": 0.0996,
                      "total": 2.2133,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.520479
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.197142
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.067271
                        },
                        {
                          "name": "goals",
                          "margin": 0.052713
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.032046
                        }
                      ],
                      "others_margin": 0.099518
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06619665771722794,
                    "model_output": 0.0662,
                    "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.0202
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0084
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0053
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0036
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.003
                        }
                      ],
                      "others": -0.004,
                      "total": 0.0662,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.27377
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.104525
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.071829
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.052429
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043548
                        }
                      ],
                      "others_margin": -0.059205
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.8098636865615845,
                    "model_output": 0.8099,
                    "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.2219
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.056
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0324
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0303
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0289
                        }
                      ],
                      "others": 0.0038,
                      "total": 0.8099,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.284597
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.06456
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.039294
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.038267
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.036525
                        }
                      ],
                      "others_margin": 0.004669
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8661909103393555,
                    "model_output": 6.8662,
                    "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.0651
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0177
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0135
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0131
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.012
                        }
                      ],
                      "others": 0.0096,
                      "total": 6.8662,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.065057
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.01765
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.013544
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.013061
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.012002
                        }
                      ],
                      "others_margin": 0.009804
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 26,
                  "role_matches": 6,
                  "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.694)",
              "stats": {
                "expected_goals": 0.2685,
                "goals": 0.3292,
                "goal_rate": 0.3292,
                "shots_on_target": 0.8262,
                "total_shots": 2.2337,
                "expected_assists": 0.0668,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.811,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1079,
                "fouls_drawn": 1.4297,
                "assists": 0.3509,
                "assist_rate": 0.3509,
                "interceptions": 0.0,
                "tackles_won": 0.3425,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6393,
                "xgot": 0.3549,
                "offsides": 0.9441,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.4075
              },
              "params": {
                "market_value_eur": 27000000,
                "quality_factor": 0.6941,
                "boost_factor": 1.0092,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0084)",
              "stats": {
                "expected_goals": 0.2685,
                "goals": 0.3264,
                "goal_rate": 0.3264,
                "shots_on_target": 0.8257,
                "total_shots": 2.2341,
                "expected_assists": 0.0668,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.8105,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1049,
                "fouls_drawn": 1.4177,
                "assists": 0.348,
                "assist_rate": 0.348,
                "interceptions": 0.0,
                "tackles_won": 0.3396,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6393,
                "xgot": 0.3549,
                "offsides": 0.9424,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.4075
              },
              "params": {
                "blend_weight": 0.0084,
                "history_matches": 26,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8962,
                "prior_reliability": 0.08,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.4297,
                  "after": 1.4177
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2685,
                "goals": 0.3264,
                "goal_rate": 0.3264,
                "shots_on_target": 0.8257,
                "total_shots": 2.2341,
                "expected_assists": 0.0668,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.8105,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1049,
                "fouls_drawn": 1.4177,
                "assists": 0.348,
                "assist_rate": 0.348,
                "interceptions": 0.0,
                "tackles_won": 0.3396,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6393,
                "xgot": 0.3549,
                "offsides": 0.9424,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.4075
              },
              "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.2842,
                "goals": 0.3455,
                "goal_rate": 0.3455,
                "shots_on_target": 0.8741,
                "total_shots": 2.365,
                "expected_assists": 0.0668,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.8105,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1049,
                "fouls_drawn": 1.4177,
                "assists": 0.348,
                "assist_rate": 0.348,
                "interceptions": 0.0,
                "tackles_won": 0.3396,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6768,
                "xgot": 0.3757,
                "offsides": 0.9424,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.49,
                "duel_xg_multiplier": 1.0586,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.24,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Kevin Danso, Thomas Meunier",
                "opponent_faced": "Kevin Danso, Thomas Meunier",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Kevin Danso, Thomas Meunier",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.24,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0586,
                  "skill_edge": 0.0599,
                  "height_edge": -0.02,
                  "attacker_skill": 0.6941,
                  "defender_skill": 0.5611,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Kevin Danso",
                      "market_value": 19400000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6847
                    },
                    {
                      "player": "Thomas Meunier",
                      "market_value": 1400000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.2842
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.2341,
                  "after": 2.365
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.4075,
                  "after": 1.49
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8257,
                  "after": 0.8741
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.6393,
                  "after": 0.6768
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3549,
                  "after": 0.3757
                },
                {
                  "stat": "goals",
                  "before": 0.3264,
                  "after": 0.3455
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2685,
                  "after": 0.2842
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "expected_goals": 0.3168,
                "goal_rate": 0.3455,
                "goals": 0,
                "shots_on_target": 0.8741,
                "total_shots": 2.365,
                "expected_assists": 0.0745,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.8105,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1049,
                "fouls_drawn": 1.4177,
                "assist_rate": 0.348,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3396,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6768,
                "xgot": 0.4189,
                "offsides": 0.9424,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.49,
                "duel_xg_multiplier": 1.0586,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.24,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Kevin Danso, Thomas Meunier",
                "opponent_faced": "Kevin Danso, Thomas Meunier",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1834,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2842,
                  "after": 0.3168
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0668,
                  "after": 0.0745
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 9 by projected rating, fifa_overall 73.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.3168,
                "goal_rate": 0.3455,
                "goals": 0,
                "shots_on_target": 0.8741,
                "total_shots": 2.365,
                "expected_assists": 0.0745,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.8105,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1049,
                "fouls_drawn": 1.4177,
                "assist_rate": 0.348,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3396,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6768,
                "xgot": 0.4189,
                "offsides": 0.9424,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.49,
                "duel_xg_multiplier": 1.0586,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.24,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Kevin Danso, Thomas Meunier",
                "opponent_faced": "Kevin Danso, Thomas Meunier",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1834,
                "creation_factor": 1.25,
                "fifa_overall": 73.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": 3996,
                "fifa_rank": 3256.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.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.3168,
                "goal_rate": 0.3455,
                "goals": 1,
                "shots_on_target": 0.8741,
                "total_shots": 2.365,
                "expected_assists": 0.0745,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.8105,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1049,
                "fouls_drawn": 1.4177,
                "assist_rate": 0.348,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3396,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6768,
                "xgot": 0.4189,
                "offsides": 0.9424,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.49,
                "duel_xg_multiplier": 1.0586,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.24,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Kevin Danso, Thomas Meunier",
                "opponent_faced": "Kevin Danso, Thomas Meunier",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2715,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1834,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 1,
                "goal_probability": 0.2715,
                "scorer_weight": 0.3749,
                "squad_weight_total": 1.6857,
                "weight_share": 0.2224,
                "finishing_factor": 1.1834,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.3168,
                "goal_rate": 0.3455,
                "goals": 1,
                "shots_on_target": 0.8741,
                "total_shots": 2.365,
                "expected_assists": 0.0745,
                "key_pass": 0.8173,
                "rating": 6.8662,
                "minutes": 80.66,
                "total_pass": 18.7708,
                "accurate_pass": 13.9228,
                "duels_won": 5.0286,
                "total_long_balls": 0.6947,
                "accurate_long_balls": 0.3249,
                "total_opp_half_passes": 13.1245,
                "accurate_opp_half_passes": 9.1123,
                "crosses_total": 0.8105,
                "crosses_accurate": 0.0,
                "touches": 38.3415,
                "possession_lost": 12.5309,
                "dispossessed": 1.7707,
                "duels_lost": 7.8442,
                "aerial_lost": 2.5661,
                "total_contest": 3.0775,
                "won_contest": 0.9905,
                "ball_recovery": 3.9844,
                "challenges_lost": 0.5191,
                "fouls": 1.1049,
                "fouls_drawn": 1.4177,
                "assist_rate": 0.348,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.3396,
                "tackles": 1.0947,
                "clearances": 1.4284,
                "blocks": 0.0,
                "big_chances_created": 0.1079,
                "big_chances_missed": 0.6768,
                "xgot": 0.4189,
                "offsides": 0.9424,
                "ball_carries": 10.859,
                "total_progression": 36.343,
                "progressive_carries": 1.836,
                "shots_off_target": 1.49,
                "duel_xg_multiplier": 1.0586,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.24,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Kevin Danso, Thomas Meunier",
                "opponent_faced": "Kevin Danso, Thomas Meunier",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2715,
                "projected_assists": 0,
                "assist_probability": 0.0718,
                "finishing_factor": 1.1834,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0718,
                "provider_weight": 0.0931,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0782,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Maxim De Cuyper": {
          "player_id": 997152,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 29,
          "height": 183,
          "market_value": 21000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.8254,
            "minutes": 80,
            "total_pass": 38,
            "accurate_pass": 32,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 22,
            "accurate_opp_half_passes": 18,
            "crosses_total": 5,
            "crosses_accurate": 2,
            "touches": 55,
            "possession_lost": 10.3099,
            "dispossessed": 0.1751,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0982,
            "goals": 0,
            "assist_rate": 0.3398,
            "assists": 1,
            "expected_goals": 0.1721,
            "expected_assists": 0.2299,
            "shots_on_target": 0,
            "big_chances_created": 1,
            "xgot": 0.1015,
            "ball_carries": 16,
            "total_progression": 53,
            "progressive_carries": 1,
            "key_pass": 2,
            "shots_off_target": 1,
            "opponent_faced": "Wilson Isidor",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.1581,
            "projected_assists": 1,
            "assist_probability": 0.2054,
            "finishing_factor": 0.8,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0208,
                "expected_assists": 0.2312,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0303,
                "expected_assists": 0.0365,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 50,
                "key_pass": 4,
                "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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 77,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1392,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 1,
                "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0317,
                "expected_assists": 0.0505,
                "total_shots": 1,
                "total_pass": 46,
                "accurate_pass": 39,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 78,
                "rating": 8.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.4668,
                "expected_assists": 0.2115,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 41,
                "accurate_pass": 37,
                "key_pass": 4,
                "tackles": 3,
                "tackles_won": 2,
                "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"
            },
            {
              "match_id": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0225,
                "expected_assists": 0.179,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 11,
                "key_pass": 3,
                "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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0913,
                "expected_assists": 0.5007,
                "total_shots": 1,
                "total_pass": 60,
                "accurate_pass": 50,
                "key_pass": 2,
                "interceptions": 2,
                "clearances": 3,
                "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": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 88,
                "rating": 9.5,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_assists": 1.1414,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 49,
                "key_pass": 6,
                "tackles": 1,
                "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": "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": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 9,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0116,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 13,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0984,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 1421,
            "combined_rank_score": 589.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 68.0,
            "sofascore_rating": 7.6,
            "sofascore_appearances": 7.0,
            "fifa_rank": 1111.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8254,
            "source_file": "data/player_rankings.csv",
            "player_name": "Maxim De Cuyper",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Seong-jun Min",
                  "ranking": 1416
                },
                {
                  "player_name": "Martin Baturina",
                  "ranking": 1417
                },
                {
                  "player_name": "Emiliano Buendía",
                  "ranking": 1418
                },
                {
                  "player_name": "Santi Cazorla",
                  "ranking": 1419
                },
                {
                  "player_name": "Mattéo Guendouzi",
                  "ranking": 1420
                }
              ],
              "lower": [
                {
                  "player_name": "Denis Zakaria",
                  "ranking": 1422
                },
                {
                  "player_name": "Oleg Zoteev",
                  "ranking": 1423
                },
                {
                  "player_name": "Samandar Ochilov",
                  "ranking": 1424
                },
                {
                  "player_name": "Aleix Febas",
                  "ranking": 1425
                },
                {
                  "player_name": "Seong-uh Park",
                  "ranking": 1426
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "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.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0051,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 167.0,
              "goals_per90": 0.5263157894736842,
              "assists_per90": 0.0,
              "shots_per90": 2.69,
              "shots_on_target_pct": 20.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (D_service) evaluated 35 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Brighton, rel: 0.13, gls/90: 0.5263157894736842, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.7884,
                "tackles": 1.5838,
                "tackles_won": 0.9832,
                "clearances": 2.2188,
                "aerial_won": 0.6495,
                "total_shots": 0.7824,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.4047,
                "accurate_pass": 32.1636,
                "duels_won": 2.7852,
                "total_long_balls": 2.8697,
                "accurate_long_balls": 1.3518,
                "total_own_half_passes": 15.2387,
                "accurate_own_half_passes": 13.9666,
                "total_opp_half_passes": 22.166,
                "accurate_opp_half_passes": 18.1971,
                "crosses_total": 4.7431,
                "crosses_accurate": 2.088,
                "touches": 54.4545,
                "possession_lost": 10.2576,
                "dispossessed": 0.1742,
                "duels_lost": 2.8114,
                "aerial_lost": 0.6954,
                "total_contest": 0.9541,
                "won_contest": 0.4407,
                "ball_recovery": 3.4785,
                "challenges_lost": 0.3647,
                "fouls": 1.0637,
                "fouls_drawn": 0.8714,
                "blocks": 0.0115,
                "goals": 0.0938,
                "goal_rate": 0.0938,
                "assists": 0.3416,
                "assist_rate": 0.3416,
                "expected_goals": 0.1536,
                "expected_assists": 0.2052,
                "shots_on_target": 0.1475,
                "big_chances_created": 0.5963,
                "xgot": 0.0905,
                "ball_carries": 16.2789,
                "total_progression": 52.3306,
                "progressive_carries": 0.8617,
                "key_pass": 2.2411,
                "shots_off_target": 0.6349
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1505,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 9.5
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.1827,
                  "aerialWon": 0.154,
                  "totalClearance_p90": 3.7876,
                  "totalTackle": 1.2502,
                  "totalPass": 31.9168
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7883540987968445,
                    "model_output": 0.7884,
                    "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": "interceptionWon",
                          "contribution": -0.1275
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0954
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0436
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0213
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0201
                        }
                      ],
                      "others": 0.0056,
                      "total": 0.7884,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.161032
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122809
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.054302
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.026939
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.025411
                        }
                      ],
                      "others_margin": 0.007188
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.5837910175323486,
                    "model_output": 1.5838,
                    "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.188
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0909
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0424
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0407
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0388
                        }
                      ],
                      "others": -0.0485,
                      "total": 1.5838,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126515
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.055897
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.025686
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.024636
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.023487
                        }
                      ],
                      "others_margin": -0.030143
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9832133054733276,
                    "model_output": 0.9832,
                    "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.1105
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0465
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0399
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0379
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0316
                        }
                      ],
                      "others": 0.0054,
                      "total": 0.9832,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121677
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.047104
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.040247
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.038279
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.031853
                        }
                      ],
                      "others_margin": 0.005523
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.218780994415283,
                    "model_output": 2.2188,
                    "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.7362
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3624
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2877
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.2219
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1906
                        }
                      ],
                      "others": -0.1586,
                      "total": 2.2188,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.239912
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125297
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.098136
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.08287
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.077121
                        }
                      ],
                      "others_margin": -0.069082
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6495068669319153,
                    "model_output": 0.6495,
                    "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.544
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0989
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.091
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.046
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0307
                        }
                      ],
                      "others": -0.1039,
                      "total": 0.6495,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.500245
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.125634
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.116145
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.057067
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.039984
                        }
                      ],
                      "others_margin": -0.14831
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7824321389198303,
                    "model_output": 0.7824,
                    "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.1422
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0669
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0399
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0222
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0162
                        }
                      ],
                      "others": 0.0239,
                      "total": 0.7824,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.142186
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.066872
                        },
                        {
                          "name": "rating",
                          "margin": 0.03989
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.022244
                        },
                        {
                          "name": "history_matches",
                          "margin": 0.016227
                        }
                      ],
                      "others_margin": 0.023881
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.825405120849609,
                    "model_output": 6.8254,
                    "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.0409
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0223
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0151
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0119
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0107
                        }
                      ],
                      "others": -0.0368,
                      "total": 6.8254,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.040863
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.022306
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.01513
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011865
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.010704
                        }
                      ],
                      "others_margin": -0.036865
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 35,
                  "role_matches": 22,
                  "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.0051, quality 0.641)",
              "stats": {
                "interceptions": 0.7924,
                "tackles": 1.5919,
                "tackles_won": 0.9882,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.7864,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.7673,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0691,
                "fouls_drawn": 0.8758,
                "blocks": 0.0116,
                "goals": 0.0943,
                "goal_rate": 0.0943,
                "assists": 0.3433,
                "assist_rate": 0.3433,
                "expected_goals": 0.1544,
                "expected_assists": 0.2062,
                "shots_on_target": 0.1483,
                "big_chances_created": 0.5993,
                "xgot": 0.091,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0051,
                "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.0103)",
              "stats": {
                "interceptions": 0.7939,
                "tackles": 1.5919,
                "tackles_won": 0.9925,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.803,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.781,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0774,
                "fouls_drawn": 0.8668,
                "blocks": 0.0116,
                "goals": 0.0982,
                "goal_rate": 0.0982,
                "assists": 0.3398,
                "assist_rate": 0.3398,
                "expected_goals": 0.1544,
                "expected_assists": 0.2062,
                "shots_on_target": 0.1517,
                "big_chances_created": 0.5993,
                "xgot": 0.091,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381
              },
              "params": {
                "blend_weight": 0.0103,
                "history_matches": 35,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8906,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.7864,
                  "after": 0.803
                },
                {
                  "stat": "totalCross",
                  "before": 4.7673,
                  "after": 4.781
                },
                {
                  "stat": "wasFouled",
                  "before": 0.8758,
                  "after": 0.8668
                },
                {
                  "stat": "fouls",
                  "before": 1.0691,
                  "after": 1.0774
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.7939,
                "tackles": 1.5919,
                "tackles_won": 0.9925,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.803,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.781,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0774,
                "fouls_drawn": 0.8668,
                "blocks": 0.0116,
                "goals": 0.0982,
                "goal_rate": 0.0982,
                "assists": 0.3398,
                "assist_rate": 0.3398,
                "expected_goals": 0.1544,
                "expected_assists": 0.2062,
                "shots_on_target": 0.1517,
                "big_chances_created": 0.5993,
                "xgot": 0.091,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381
              },
              "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.7939,
                "tackles": 1.5919,
                "tackles_won": 0.9925,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.803,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.781,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0774,
                "fouls_drawn": 0.8668,
                "blocks": 0.0116,
                "goals": 0.0982,
                "goal_rate": 0.0982,
                "assists": 0.3398,
                "assist_rate": 0.3398,
                "expected_goals": 0.1544,
                "expected_assists": 0.2062,
                "shots_on_target": 0.1517,
                "big_chances_created": 0.5993,
                "xgot": 0.091,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381,
                "opponent_faced": "Wilson Isidor",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Wilson Isidor",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "interceptions": 0.7939,
                "tackles": 1.5919,
                "tackles_won": 0.9925,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.803,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.781,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0774,
                "fouls_drawn": 0.8668,
                "blocks": 0.0116,
                "goal_rate": 0.0982,
                "goals": 0,
                "assist_rate": 0.3398,
                "assists": 0,
                "expected_goals": 0.1721,
                "expected_assists": 0.2299,
                "shots_on_target": 0.1517,
                "big_chances_created": 0.5993,
                "xgot": 0.1015,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381,
                "opponent_faced": "Wilson Isidor",
                "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": 1.25
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1544,
                  "after": 0.1721
                },
                {
                  "stat": "expected_assists",
                  "before": 0.2062,
                  "after": 0.2299
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 11 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "interceptions": 0.7939,
                "tackles": 1.5919,
                "tackles_won": 0.9925,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.803,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.781,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0774,
                "fouls_drawn": 0.8668,
                "blocks": 0.0116,
                "goal_rate": 0.0982,
                "goals": 0,
                "assist_rate": 0.3398,
                "assists": 0,
                "expected_goals": 0.1721,
                "expected_assists": 0.2299,
                "shots_on_target": 0.1517,
                "big_chances_created": 0.5993,
                "xgot": 0.1015,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381,
                "opponent_faced": "Wilson Isidor",
                "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": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1421,
                "fifa_rank": 1111.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": {
                "interceptions": 0.7939,
                "tackles": 1.5919,
                "tackles_won": 0.9925,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.803,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.781,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0774,
                "fouls_drawn": 0.8668,
                "blocks": 0.0116,
                "goal_rate": 0.0982,
                "goals": 0,
                "assist_rate": 0.3398,
                "assists": 0,
                "expected_goals": 0.1721,
                "expected_assists": 0.2299,
                "shots_on_target": 0.1517,
                "big_chances_created": 0.5993,
                "xgot": 0.1015,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381,
                "opponent_faced": "Wilson Isidor",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.1581,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.1581,
                "scorer_weight": 0.1377,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0817,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.7939,
                "tackles": 1.5919,
                "tackles_won": 0.9925,
                "clearances": 2.2301,
                "aerial_won": 0.6528,
                "total_shots": 0.803,
                "rating": 6.8254,
                "minutes": 80.15,
                "total_pass": 37.5955,
                "accurate_pass": 32.3276,
                "duels_won": 2.7994,
                "total_long_balls": 2.8843,
                "accurate_long_balls": 1.3587,
                "total_own_half_passes": 15.3164,
                "accurate_own_half_passes": 14.0378,
                "total_opp_half_passes": 22.279,
                "accurate_opp_half_passes": 18.2899,
                "crosses_total": 4.781,
                "crosses_accurate": 2.0986,
                "touches": 54.7322,
                "possession_lost": 10.3099,
                "dispossessed": 0.1751,
                "duels_lost": 2.8257,
                "aerial_lost": 0.6989,
                "total_contest": 0.959,
                "won_contest": 0.4429,
                "ball_recovery": 3.4962,
                "challenges_lost": 0.3666,
                "fouls": 1.0774,
                "fouls_drawn": 0.8668,
                "blocks": 0.0116,
                "goal_rate": 0.0982,
                "goals": 0,
                "assist_rate": 0.3398,
                "assists": 1,
                "expected_goals": 0.1721,
                "expected_assists": 0.2299,
                "shots_on_target": 0.1517,
                "big_chances_created": 0.5993,
                "xgot": 0.1015,
                "ball_carries": 16.3619,
                "total_progression": 52.5975,
                "progressive_carries": 0.8661,
                "key_pass": 2.2525,
                "shots_off_target": 0.6381,
                "opponent_faced": "Wilson Isidor",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.1581,
                "projected_assists": 1,
                "assist_probability": 0.2054,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.2054,
                "provider_weight": 0.2874,
                "squad_weight_total": 1.1906,
                "weight_share": 0.2414,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Malick Yalcouyé": {
          "player_id": 1568186,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 35,
          "height": 171,
          "market_value": 12600000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1314,
            "assist_rate": 0.1195,
            "assists": 0,
            "expected_goals": 0.177,
            "goal_rate": 0.1655,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 6.8701,
            "minutes": 80,
            "total_pass": 27,
            "accurate_pass": 23,
            "duels_won": 5,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 9,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 44,
            "possession_lost": 9.5033,
            "dispossessed": 0.3915,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 2,
            "total_contest": 2,
            "won_contest": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.8199,
            "ball_carries": 16,
            "total_progression": 85,
            "progressive_carries": 5,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8559,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "HIGH",
            "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Enzo Le Fée, Noah Sadiki",
            "opponent_faced": "Enzo Le Fée, Noah Sadiki",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1622,
            "projected_assists": 0,
            "assist_probability": 0.1231,
            "finishing_factor": 1.0321,
            "creation_factor": 1.0095,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 12,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0413,
                "expected_assists": 0.1798,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 1,
                "accurate_pass": 1,
                "key_pass": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 65,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6747,
                "expected_assists": 0.0101,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0504,
                "expected_assists": 0.0876,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 29,
                "key_pass": 2,
                "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 74,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6974,
                "expected_assists": 0.1606,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 30,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 9,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 15
              },
              "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": 4836,
            "combined_rank_score": 2928.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 5565.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8701,
            "source_file": "data/player_rankings.csv",
            "player_name": "Malick Yalcouyé",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nectarios Triantis",
                  "ranking": 4831
                },
                {
                  "player_name": "Andy Polo",
                  "ranking": 4832
                },
                {
                  "player_name": "Daniel Bentley",
                  "ranking": 4833
                },
                {
                  "player_name": "Marco Pellegrino",
                  "ranking": 4834
                },
                {
                  "player_name": "Álex Muñoz",
                  "ranking": 4835
                }
              ],
              "lower": [
                {
                  "player_name": "Juan Ferney Otero",
                  "ranking": 4837
                },
                {
                  "player_name": "Lucas Silva",
                  "ranking": 4838
                },
                {
                  "player_name": "Gelabert",
                  "ranking": 4839
                },
                {
                  "player_name": "Dinko Horkaš",
                  "ranking": 4840
                },
                {
                  "player_name": "Nacho Vidal",
                  "ranking": 4841
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.572,
          "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.572,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0071,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 78.0,
              "goals_per90": 1.1111111111111112,
              "assists_per90": 0.0,
              "shots_per90": 2.31,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.06
            },
            "rationale": "XGBoost regressor (M_service) evaluated 5 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Brighton, rel: 0.06, gls/90: 1.1111111111111112, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.1046,
                "expected_assists": 0.1171,
                "assists": 0.121,
                "assist_rate": 0.121,
                "expected_goals": 0.1842,
                "goals": 0.1763,
                "goal_rate": 0.1763,
                "shots_on_target": 0.7511,
                "total_shots": 1.8683,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.0457,
                "accurate_pass": 22.8232,
                "duels_won": 5.1147,
                "total_long_balls": 0.3887,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3285,
                "accurate_own_half_passes": 8.6677,
                "total_opp_half_passes": 17.7172,
                "accurate_opp_half_passes": 14.1555,
                "crosses_total": 1.6113,
                "crosses_accurate": 0.0,
                "touches": 43.482,
                "possession_lost": 9.4363,
                "dispossessed": 0.3887,
                "duels_lost": 3.2245,
                "aerial_won": 0.6608,
                "aerial_lost": 0.7775,
                "interceptions": 0.0,
                "tackles_won": 0.6696,
                "tackles": 1.62,
                "clearances": 1.6113,
                "total_contest": 2.4538,
                "won_contest": 1.8425,
                "challenges_lost": 0.2809,
                "fouls": 1.1662,
                "fouls_drawn": 0.9913,
                "blocks": 0.3887,
                "big_chances_created": 0.2809,
                "big_chances_missed": 0.2809,
                "xgot": 0.8531,
                "ball_carries": 15.4383,
                "total_progression": 84.4683,
                "progressive_carries": 4.4966,
                "shots_off_target": 1.1172
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.2696,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.4832,
                  "creative_index": 0.4788,
                  "expectedGoals": 0.2911,
                  "expectedAssists": 0.0952,
                  "onTargetScoringAttempt": 0.7896
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.104554295539856,
                    "model_output": 1.1046,
                    "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.1203
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0498
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0474
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0403
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0354
                        }
                      ],
                      "others": 0.0058,
                      "total": 1.1046,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127264
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.048293
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.043877
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.037174
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.03274
                        }
                      ],
                      "others_margin": 0.005257
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.11705464124679565,
                    "model_output": 0.1171,
                    "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.0082
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0074
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0044
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0041
                        }
                      ],
                      "others": 0.0194,
                      "total": 0.1171,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125013
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080736
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.072868
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.046087
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.043272
                        }
                      ],
                      "others_margin": 0.180866
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.12103378772735596,
                    "model_output": 0.121,
                    "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.0154
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0094
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.01
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0096
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0074
                        }
                      ],
                      "others": 0.0032,
                      "total": 0.121,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.166018
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.089304
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.087393
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.083386
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.064459
                        }
                      ],
                      "others_margin": 0.026933
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.18418067693710327,
                    "model_output": 0.1842,
                    "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.043
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0145
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0159
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.015
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0139
                        }
                      ],
                      "others": -0.0125,
                      "total": 0.1842,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.375389
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.100474
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.099696
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.085708
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.073366
                        }
                      ],
                      "others_margin": -0.066552
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.17634731531143188,
                    "model_output": 0.1763,
                    "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.0222
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0185
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0168
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0146
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0106
                        }
                      ],
                      "others": 0.08,
                      "total": 0.1763,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.204964
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.143355
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.129676
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.127897
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.104586
                        }
                      ],
                      "others_margin": 0.604955
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.751052975654602,
                    "model_output": 0.7511,
                    "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.0947
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.1071
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0537
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0462
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.038
                        }
                      ],
                      "others": 0.0874,
                      "total": 0.7511,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.256401
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.227726
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.097206
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.07669
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.059019
                        }
                      ],
                      "others_margin": 0.123718
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.8682962656021118,
                    "model_output": 1.8683,
                    "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.3335
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.174
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.1203
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0825
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0678
                        }
                      ],
                      "others": 0.0997,
                      "total": 1.8683,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.33352
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.174013
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.12028
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.082512
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.067819
                        }
                      ],
                      "others_margin": 0.099687
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.870081901550293,
                    "model_output": 6.8701,
                    "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.0566
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0493
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0307
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0243
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0188
                        }
                      ],
                      "others": 0.0263,
                      "total": 6.8701,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.056555
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.049266
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.030673
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.024282
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.018777
                        }
                      ],
                      "others_margin": 0.026308
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "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.0071, quality 0.552)",
              "stats": {
                "key_pass": 1.1124,
                "expected_assists": 0.1179,
                "assists": 0.1219,
                "assist_rate": 0.1219,
                "expected_goals": 0.1855,
                "goals": 0.1776,
                "goal_rate": 0.1776,
                "shots_on_target": 0.7564,
                "total_shots": 1.8816,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6227,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.6655,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6744,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1745,
                "fouls_drawn": 0.9983,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2829,
                "xgot": 0.8592,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 1.1251
              },
              "params": {
                "market_value_eur": 12600000,
                "quality_factor": 0.5525,
                "boost_factor": 1.0071,
                "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.0195)",
              "stats": {
                "key_pass": 1.1124,
                "expected_assists": 0.1179,
                "assists": 0.1195,
                "assist_rate": 0.1195,
                "expected_goals": 0.1855,
                "goals": 0.1934,
                "goal_rate": 0.1934,
                "shots_on_target": 0.7816,
                "total_shots": 1.8849,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6295,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.6655,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6805,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1516,
                "fouls_drawn": 0.9788,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2829,
                "xgot": 0.8592,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 1.1251
              },
              "params": {
                "blend_weight": 0.0195,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8874,
                "prior_reliability": 0.06,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7564,
                  "after": 0.7816
                },
                {
                  "stat": "fouls",
                  "before": 1.1745,
                  "after": 1.1516
                },
                {
                  "stat": "wasFouled",
                  "before": 0.9983,
                  "after": 0.9788
                },
                {
                  "stat": "goals",
                  "before": 0.1776,
                  "after": 0.1934
                },
                {
                  "stat": "totalCross",
                  "before": 1.6227,
                  "after": 1.6295
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6744,
                  "after": 0.6805
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.1124,
                "expected_assists": 0.1179,
                "assists": 0.1195,
                "assist_rate": 0.1195,
                "expected_goals": 0.1855,
                "goals": 0.1934,
                "goal_rate": 0.1934,
                "shots_on_target": 0.7816,
                "total_shots": 1.9067,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6295,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.6655,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6805,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1516,
                "fouls_drawn": 0.9788,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2829,
                "xgot": 0.8592,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 1.1251
              },
              "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": 1.1124,
                "expected_assists": 0.1179,
                "assists": 0.1195,
                "assist_rate": 0.1195,
                "expected_goals": 0.1588,
                "goals": 0.1655,
                "goal_rate": 0.1655,
                "shots_on_target": 0.669,
                "total_shots": 1.632,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6295,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.8,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6805,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1516,
                "fouls_drawn": 0.9788,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2421,
                "xgot": 0.7354,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 0.963,
                "duel_xg_multiplier": 0.8559,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Le Fée, Noah Sadiki",
                "opponent_faced": "Enzo Le Fée, Noah Sadiki",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Enzo Le Fée, Noah Sadiki",
                  "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.8559,
                  "skill_edge": -0.09,
                  "height_edge": -0.008,
                  "attacker_skill": 0.56,
                  "defender_skill": 0.76,
                  "attacker_role": "CAM",
                  "attacker_mv_price_index": 0.95,
                  "defender_adjusted_parts": [
                    {
                      "player": "Enzo Le Fée",
                      "market_value": 26000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7219
                    },
                    {
                      "player": "Noah Sadiki",
                      "market_value": 37000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7981
                    }
                  ],
                  "xg_override": 0.1588
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.9067,
                  "after": 1.632
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.1251,
                  "after": 0.963
                },
                {
                  "stat": "aerialWon",
                  "before": 0.6655,
                  "after": 0.8
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.8592,
                  "after": 0.7354
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7816,
                  "after": 0.669
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2829,
                  "after": 0.2421
                },
                {
                  "stat": "goals",
                  "before": 0.1934,
                  "after": 0.1655
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1855,
                  "after": 0.1588
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "key_pass": 1.1124,
                "expected_assists": 0.1314,
                "assist_rate": 0.1195,
                "assists": 0,
                "expected_goals": 0.177,
                "goal_rate": 0.1655,
                "goals": 0,
                "shots_on_target": 0.669,
                "total_shots": 1.632,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6295,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.8,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6805,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1516,
                "fouls_drawn": 0.9788,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2421,
                "xgot": 0.8199,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 0.963,
                "duel_xg_multiplier": 0.8559,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Le Fée, Noah Sadiki",
                "opponent_faced": "Enzo Le Fée, Noah Sadiki",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0321,
                "creation_factor": 1.0095
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1588,
                  "after": 0.177
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1179,
                  "after": 0.1314
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 8 by projected rating, fifa_overall 70.0; not used by the projection)",
              "stats": {
                "key_pass": 1.1124,
                "expected_assists": 0.1314,
                "assist_rate": 0.1195,
                "assists": 0,
                "expected_goals": 0.177,
                "goal_rate": 0.1655,
                "goals": 0,
                "shots_on_target": 0.669,
                "total_shots": 1.632,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6295,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.8,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6805,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1516,
                "fouls_drawn": 0.9788,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2421,
                "xgot": 0.8199,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 0.963,
                "duel_xg_multiplier": 0.8559,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Le Fée, Noah Sadiki",
                "opponent_faced": "Enzo Le Fée, Noah Sadiki",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0321,
                "creation_factor": 1.0095,
                "fifa_overall": 70.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": 4836,
                "fifa_rank": 5565.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.1124,
                "expected_assists": 0.1314,
                "assist_rate": 0.1195,
                "assists": 0,
                "expected_goals": 0.177,
                "goal_rate": 0.1655,
                "goals": 0,
                "shots_on_target": 0.669,
                "total_shots": 1.632,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6295,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.8,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6805,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1516,
                "fouls_drawn": 0.9788,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2421,
                "xgot": 0.8199,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 0.963,
                "duel_xg_multiplier": 0.8559,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Le Fée, Noah Sadiki",
                "opponent_faced": "Enzo Le Fée, Noah Sadiki",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1622,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0321,
                "creation_factor": 1.0095,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.1622,
                "scorer_weight": 0.1827,
                "squad_weight_total": 1.6857,
                "weight_share": 0.1084,
                "finishing_factor": 1.0321,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.1124,
                "expected_assists": 0.1314,
                "assist_rate": 0.1195,
                "assists": 0,
                "expected_goals": 0.177,
                "goal_rate": 0.1655,
                "goals": 0,
                "shots_on_target": 0.669,
                "total_shots": 1.632,
                "rating": 6.8701,
                "minutes": 79.87,
                "total_pass": 27.2377,
                "accurate_pass": 22.9852,
                "duels_won": 5.151,
                "total_long_balls": 0.3915,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 9.3947,
                "accurate_own_half_passes": 8.7292,
                "total_opp_half_passes": 17.843,
                "accurate_opp_half_passes": 14.256,
                "crosses_total": 1.6295,
                "crosses_accurate": 0.0,
                "touches": 43.7907,
                "possession_lost": 9.5033,
                "dispossessed": 0.3915,
                "duels_lost": 3.2474,
                "aerial_won": 0.8,
                "aerial_lost": 0.783,
                "interceptions": 0.0,
                "tackles_won": 0.6805,
                "tackles": 1.6315,
                "clearances": 1.6227,
                "total_contest": 2.4712,
                "won_contest": 1.8556,
                "challenges_lost": 0.2829,
                "fouls": 1.1516,
                "fouls_drawn": 0.9788,
                "blocks": 0.3915,
                "big_chances_created": 0.2829,
                "big_chances_missed": 0.2421,
                "xgot": 0.8199,
                "ball_carries": 15.5479,
                "total_progression": 85.068,
                "progressive_carries": 4.5285,
                "shots_off_target": 0.963,
                "duel_xg_multiplier": 0.8559,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Le Fée, Noah Sadiki",
                "opponent_faced": "Enzo Le Fée, Noah Sadiki",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1622,
                "projected_assists": 0,
                "assist_probability": 0.1231,
                "finishing_factor": 1.0321,
                "creation_factor": 1.0095,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1231,
                "provider_weight": 0.1326,
                "squad_weight_total": 1.1906,
                "weight_share": 0.1114,
                "creation_factor": 1.0095,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Diego Gómez": {
          "player_id": 1065588,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 25,
          "height": 185,
          "market_value": 27000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1142,
            "assist_rate": 0.1296,
            "assists": 0,
            "expected_goals": 0.2049,
            "goal_rate": 0.2452,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 6.9033,
            "minutes": 80,
            "total_pass": 28,
            "accurate_pass": 21,
            "duels_won": 6,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 15,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 45,
            "possession_lost": 12.1438,
            "dispossessed": 1.3161,
            "duels_lost": 7,
            "aerial_won": 1,
            "aerial_lost": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 3,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1541,
            "ball_carries": 12,
            "total_progression": 50,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0761,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.472,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Enzo Le Fée",
            "opponent_faced": "Enzo Le Fée",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1853,
            "projected_assists": 0,
            "assist_probability": 0.1079,
            "finishing_factor": 1.25,
            "creation_factor": 1.1785,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 86,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0246,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 5,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 4,
                "duels_won": 9,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 84,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1363,
                "expected_assists": 0.0629,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 26,
                "clearances": 1,
                "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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0882,
                "expected_assists": 0.0523,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 4,
                "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3792,
                "expected_assists": 0.1675,
                "total_shots": 5,
                "shots_on_target": 1,
                "shots_off_target": 4,
                "total_pass": 29,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 4,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 86,
                "rating": 8.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1838,
                "expected_assists": 0.4817,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 33,
                "accurate_pass": 27,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "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": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 59,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2787,
                "expected_assists": 0.0121,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 20,
                "accurate_pass": 12,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "aerial_won": 3,
                "duels_won": 6,
                "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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 25,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6453,
                "expected_assists": 0.0134,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 15,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 20,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 4,
                "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": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 88,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.036,
                "expected_assists": 0.1108,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024015,
              "match_date": "2026-03-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 89,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3546,
                "expected_assists": 0.2629,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 25,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1631,
            "combined_rank_score": 660.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 199.0,
            "sofascore_rating": 7.2,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1122.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9033,
            "source_file": "data/player_rankings.csv",
            "player_name": "Diego Gómez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Cristian Avram",
                  "ranking": 1626
                },
                {
                  "player_name": "Vykintas Slivka",
                  "ranking": 1627
                },
                {
                  "player_name": "Roméo Lavia",
                  "ranking": 1628
                },
                {
                  "player_name": "Ezequiel Cañete",
                  "ranking": 1629
                },
                {
                  "player_name": "Yu-chan Lee",
                  "ranking": 1630
                }
              ],
              "lower": [
                {
                  "player_name": "Ozan Kabak",
                  "ranking": 1632
                },
                {
                  "player_name": "Fausto Grillo",
                  "ranking": 1633
                },
                {
                  "player_name": "Sherzod Fayziev",
                  "ranking": 1634
                },
                {
                  "player_name": "Destiny Udogie",
                  "ranking": 1635
                },
                {
                  "player_name": "Jae-yul Yeo",
                  "ranking": 1636
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 37,
          "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": 37,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0068,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 175.0,
              "goals_per90": 0.0,
              "assists_per90": 0.5263157894736842,
              "shots_per90": 4.11,
              "shots_on_target_pct": 37.5,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (M_service) evaluated 37 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Brighton, rel: 0.13, gls/90: 0.0, ast/90: 0.5263157894736842)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.0434,
                "expected_assists": 0.1017,
                "assists": 0.1253,
                "assist_rate": 0.1253,
                "expected_goals": 0.1696,
                "goals": 0.2286,
                "goal_rate": 0.2286,
                "shots_on_target": 0.5872,
                "total_shots": 1.6245,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.5275,
                "accurate_pass": 21.0133,
                "duels_won": 6.1066,
                "total_long_balls": 1.7451,
                "accurate_long_balls": 0.8363,
                "total_own_half_passes": 7.3829,
                "accurate_own_half_passes": 6.5022,
                "total_opp_half_passes": 20.1447,
                "accurate_opp_half_passes": 14.5112,
                "crosses_total": 1.5007,
                "crosses_accurate": 0.4202,
                "touches": 44.4013,
                "possession_lost": 12.0618,
                "dispossessed": 1.3072,
                "duels_lost": 6.9051,
                "aerial_won": 2.9816,
                "aerial_lost": 2.354,
                "interceptions": 0.8345,
                "tackles_won": 1.3371,
                "tackles": 2.5655,
                "clearances": 0.6294,
                "total_contest": 1.5677,
                "won_contest": 0.4179,
                "challenges_lost": 0.5844,
                "fouls": 1.5209,
                "fouls_drawn": 0.1416,
                "blocks": 0.0638,
                "big_chances_created": 0.2476,
                "big_chances_missed": 0.2604,
                "xgot": 0.1275,
                "ball_carries": 11.7376,
                "total_progression": 49.9318,
                "progressive_carries": 1.6866,
                "shots_off_target": 1.0373
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 20.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Burnley",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Liverpool FC",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 2.0887,
                  "creative_index": 0.4263,
                  "expectedGoals": 0.1737,
                  "expectedAssists": 0.0939,
                  "onTargetScoringAttempt": 0.4566
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.0434088706970215,
                    "model_output": 1.0434,
                    "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.1174
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0542
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0478
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0477
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0398
                        }
                      ],
                      "others": 0.0383,
                      "total": 1.0434,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12443
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.055502
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.04916
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.046764
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.038831
                        }
                      ],
                      "others_margin": 0.037289
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.1016663983464241,
                    "model_output": 0.1017,
                    "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": "aerialWon",
                          "contribution": -0.0091
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0076
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0053
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0045
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0047
                        }
                      ],
                      "others": 0.0029,
                      "total": 0.1017,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.112626
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.094589
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.060985
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.049411
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.048536
                        }
                      ],
                      "others_margin": 0.029094
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.1253277212381363,
                    "model_output": 0.1253,
                    "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.0144
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0089
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0077
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0066
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.006
                        }
                      ],
                      "others": -0.0035,
                      "total": 0.1253,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.156558
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.08521
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.068304
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.055269
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.047561
                        }
                      ],
                      "others_margin": -0.02732
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.16963209211826324,
                    "model_output": 0.1696,
                    "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.0272
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0204
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0162
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0147
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0064
                        }
                      ],
                      "others": -0.0097,
                      "total": 0.1696,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.253202
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.155337
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.107937
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.088628
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.036092
                        }
                      ],
                      "others_margin": -0.055402
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.22864872217178345,
                    "model_output": 0.2286,
                    "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.0396
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0227
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0185
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0184
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0156
                        }
                      ],
                      "others": 0.0162,
                      "total": 0.2286,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.340715
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.15284
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.109463
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.098236
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.076339
                        }
                      ],
                      "others_margin": 0.073253
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5871513485908508,
                    "model_output": 0.5872,
                    "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.1034
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0614
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0671
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0532
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0149
                        }
                      ],
                      "others": -0.0368,
                      "total": 0.5872,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.277041
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.134245
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128609
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.09141
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.024141
                        }
                      ],
                      "others_margin": -0.060881
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.624483346939087,
                    "model_output": 1.6245,
                    "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.453
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1629
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0765
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0521
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0401
                        }
                      ],
                      "others": -0.0464,
                      "total": 1.6245,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.45301
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.16293
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.076479
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.052112
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.040081
                        }
                      ],
                      "others_margin": -0.046369
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.903285503387451,
                    "model_output": 6.9033,
                    "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": "totalShots",
                          "contribution": 0.0351
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0301
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0206
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0169
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0133
                        }
                      ],
                      "others": 0.0134,
                      "total": 6.9033,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.035127
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.030066
                        },
                        {
                          "name": "rating",
                          "margin": -0.020608
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.016858
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.013274
                        }
                      ],
                      "others_margin": 0.013412
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 37,
                  "role_matches": 31,
                  "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.0068, quality 0.694)",
              "stats": {
                "key_pass": 1.0505,
                "expected_assists": 0.1024,
                "assists": 0.1262,
                "assist_rate": 0.1262,
                "expected_goals": 0.1708,
                "goals": 0.2302,
                "goal_rate": 0.2302,
                "shots_on_target": 0.5911,
                "total_shots": 1.6355,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5109,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 3.0019,
                "aerial_lost": 2.37,
                "interceptions": 0.8402,
                "tackles_won": 1.3462,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5312,
                "fouls_drawn": 0.1426,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2622,
                "xgot": 0.1284,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.0444
              },
              "params": {
                "market_value_eur": 27000000,
                "quality_factor": 0.6941,
                "boost_factor": 1.0068,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0098)",
              "stats": {
                "key_pass": 1.0505,
                "expected_assists": 0.1024,
                "assists": 0.1296,
                "assist_rate": 0.1296,
                "expected_goals": 0.1708,
                "goals": 0.2279,
                "goal_rate": 0.2279,
                "shots_on_target": 0.5988,
                "total_shots": 1.6554,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5145,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 3.0019,
                "aerial_lost": 2.37,
                "interceptions": 0.8412,
                "tackles_won": 1.3514,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5254,
                "fouls_drawn": 0.1412,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2622,
                "xgot": 0.1284,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.0444
              },
              "params": {
                "blend_weight": 0.0098,
                "history_matches": 37,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8926,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.6355,
                  "after": 1.6554
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5911,
                  "after": 0.5988
                },
                {
                  "stat": "fouls",
                  "before": 1.5312,
                  "after": 1.5254
                },
                {
                  "stat": "wonTackle",
                  "before": 1.3462,
                  "after": 1.3514
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.0505,
                "expected_assists": 0.1024,
                "assists": 0.1296,
                "assist_rate": 0.1296,
                "expected_goals": 0.1708,
                "goals": 0.2279,
                "goal_rate": 0.2279,
                "shots_on_target": 0.5988,
                "total_shots": 1.6554,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5145,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 3.0019,
                "aerial_lost": 2.37,
                "interceptions": 0.8412,
                "tackles_won": 1.3514,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5254,
                "fouls_drawn": 0.1412,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2622,
                "xgot": 0.1284,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.0444
              },
              "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": 1.0505,
                "expected_assists": 0.1024,
                "assists": 0.1296,
                "assist_rate": 0.1296,
                "expected_goals": 0.1838,
                "goals": 0.2452,
                "goal_rate": 0.2452,
                "shots_on_target": 0.6444,
                "total_shots": 1.7814,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5145,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 1.2,
                "aerial_lost": 2.37,
                "interceptions": 0.8412,
                "tackles_won": 1.3514,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5254,
                "fouls_drawn": 0.1412,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2822,
                "xgot": 0.1382,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.1239,
                "duel_xg_multiplier": 1.0761,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.472,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Enzo Le Fée",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.472,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0761,
                  "skill_edge": 0.0038,
                  "height_edge": 0.048,
                  "attacker_skill": 0.7304,
                  "defender_skill": 0.7219,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Enzo Le Fée",
                      "market_value": 26000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7219
                    }
                  ],
                  "xg_override": 0.1838
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 3.0019,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 1.6554,
                  "after": 1.7814
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.0444,
                  "after": 1.1239
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5988,
                  "after": 0.6444
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2622,
                  "after": 0.2822
                },
                {
                  "stat": "goals",
                  "before": 0.2279,
                  "after": 0.2452
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1708,
                  "after": 0.1838
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1284,
                  "after": 0.1382
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "key_pass": 1.0505,
                "expected_assists": 0.1142,
                "assist_rate": 0.1296,
                "assists": 0,
                "expected_goals": 0.2049,
                "goal_rate": 0.2452,
                "goals": 0,
                "shots_on_target": 0.6444,
                "total_shots": 1.7814,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5145,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 1.2,
                "aerial_lost": 2.37,
                "interceptions": 0.8412,
                "tackles_won": 1.3514,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5254,
                "fouls_drawn": 0.1412,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2822,
                "xgot": 0.1541,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.1239,
                "duel_xg_multiplier": 1.0761,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.472,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1785
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1838,
                  "after": 0.2049
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1024,
                  "after": 0.1142
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 7 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "key_pass": 1.0505,
                "expected_assists": 0.1142,
                "assist_rate": 0.1296,
                "assists": 0,
                "expected_goals": 0.2049,
                "goal_rate": 0.2452,
                "goals": 0,
                "shots_on_target": 0.6444,
                "total_shots": 1.7814,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5145,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 1.2,
                "aerial_lost": 2.37,
                "interceptions": 0.8412,
                "tackles_won": 1.3514,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5254,
                "fouls_drawn": 0.1412,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2822,
                "xgot": 0.1541,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.1239,
                "duel_xg_multiplier": 1.0761,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.472,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1785,
                "fifa_overall": 78.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": 1631,
                "fifa_rank": 1122.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": {
                "key_pass": 1.0505,
                "expected_assists": 0.1142,
                "assist_rate": 0.1296,
                "assists": 0,
                "expected_goals": 0.2049,
                "goal_rate": 0.2452,
                "goals": 0,
                "shots_on_target": 0.6444,
                "total_shots": 1.7814,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5145,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 1.2,
                "aerial_lost": 2.37,
                "interceptions": 0.8412,
                "tackles_won": 1.3514,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5254,
                "fouls_drawn": 0.1412,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2822,
                "xgot": 0.1541,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.1239,
                "duel_xg_multiplier": 1.0761,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.472,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1853,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1785,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.1853,
                "scorer_weight": 0.2561,
                "squad_weight_total": 1.6857,
                "weight_share": 0.1519,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.0505,
                "expected_assists": 0.1142,
                "assist_rate": 0.1296,
                "assists": 0,
                "expected_goals": 0.2049,
                "goal_rate": 0.2452,
                "goals": 0,
                "shots_on_target": 0.6444,
                "total_shots": 1.7814,
                "rating": 6.9033,
                "minutes": 80.33,
                "total_pass": 27.7147,
                "accurate_pass": 21.1562,
                "duels_won": 6.1481,
                "total_long_balls": 1.757,
                "accurate_long_balls": 0.842,
                "total_own_half_passes": 7.4331,
                "accurate_own_half_passes": 6.5464,
                "total_opp_half_passes": 20.2817,
                "accurate_opp_half_passes": 14.6099,
                "crosses_total": 1.5145,
                "crosses_accurate": 0.4231,
                "touches": 44.7032,
                "possession_lost": 12.1438,
                "dispossessed": 1.3161,
                "duels_lost": 6.9521,
                "aerial_won": 1.2,
                "aerial_lost": 2.37,
                "interceptions": 0.8412,
                "tackles_won": 1.3514,
                "tackles": 2.5829,
                "clearances": 0.6337,
                "total_contest": 1.5784,
                "won_contest": 0.4207,
                "challenges_lost": 0.5884,
                "fouls": 1.5254,
                "fouls_drawn": 0.1412,
                "blocks": 0.0642,
                "big_chances_created": 0.2493,
                "big_chances_missed": 0.2822,
                "xgot": 0.1541,
                "ball_carries": 11.8174,
                "total_progression": 50.2713,
                "progressive_carries": 1.6981,
                "shots_off_target": 1.1239,
                "duel_xg_multiplier": 1.0761,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.472,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1853,
                "projected_assists": 0,
                "assist_probability": 0.1079,
                "finishing_factor": 1.25,
                "creation_factor": 1.1785,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1079,
                "provider_weight": 0.1346,
                "squad_weight_total": 1.1906,
                "weight_share": 0.113,
                "creation_factor": 1.1785,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Yasin Ayari": {
          "player_id": 1036269,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 26,
          "height": 172,
          "market_value": 36000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.059,
            "assist_rate": 0.0557,
            "assists": 0,
            "expected_goals": 0.1264,
            "goal_rate": 0.1296,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8317,
            "minutes": 86,
            "total_pass": 41,
            "accurate_pass": 37,
            "duels_won": 4,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 20,
            "accurate_own_half_passes": 18,
            "total_opp_half_passes": 22,
            "accurate_opp_half_passes": 19,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 55,
            "possession_lost": 7.8462,
            "dispossessed": 0.8166,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1991,
            "ball_carries": 17,
            "total_progression": 31,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0409,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.448,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Enzo Le Fée",
            "opponent_faced": "Enzo Le Fée",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1187,
            "projected_assists": 0,
            "assist_probability": 0.0573,
            "finishing_factor": 1.0991,
            "creation_factor": 1.0272,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1056,
                "expected_assists": 0.0804,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3134,
                "expected_assists": 0.0309,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 48,
                "accurate_pass": 44,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.165,
                "expected_assists": 0.037,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 58,
                "accurate_pass": 53,
                "key_pass": 1,
                "clearances": 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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 64,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1115,
                "expected_assists": 0.0293,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 40,
                "accurate_pass": 36,
                "key_pass": 1,
                "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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "interceptions": 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": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "interceptions": 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": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 82,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0917,
                "expected_assists": 0.0103,
                "total_shots": 1,
                "total_pass": 33,
                "accurate_pass": 29,
                "interceptions": 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"
            },
            {
              "match_id": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0202,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 36,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 3,
                "duels_won": 8,
                "ball_recovery": 9
              },
              "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": 14024015,
              "match_date": "2026-03-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 15,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0719,
                "expected_assists": 0.052,
                "total_shots": 1,
                "total_pass": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1829,
            "combined_rank_score": 706.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 535.0,
            "sofascore_rating": 6.8286,
            "sofascore_appearances": 7.0,
            "fifa_rank": 877.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8317,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yasin Ayari",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Konstantinos Mavropanos",
                  "ranking": 1824
                },
                {
                  "player_name": "Nicolás Tagliafico",
                  "ranking": 1825
                },
                {
                  "player_name": "Joaquín Soto",
                  "ranking": 1826
                },
                {
                  "player_name": "Jeon Seong-jin",
                  "ranking": 1827
                },
                {
                  "player_name": "Enzo Boyomo",
                  "ranking": 1828
                }
              ],
              "lower": [
                {
                  "player_name": "Fernando Ovelar",
                  "ranking": 1830
                },
                {
                  "player_name": "Diego Sanhueza",
                  "ranking": 1831
                },
                {
                  "player_name": "Aaron Astudillo",
                  "ranking": 1832
                },
                {
                  "player_name": "Valentin Rongier",
                  "ranking": 1833
                },
                {
                  "player_name": "Geny Catamo",
                  "ranking": 1834
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.757,
          "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.757,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.01,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 63.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.86,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0467
            },
            "rationale": "XGBoost regressor (M_service) evaluated 33 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Brighton, rel: 0.05, 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.73,
                "expected_assists": 0.0523,
                "assists": 0.0553,
                "assist_rate": 0.0553,
                "expected_goals": 0.1078,
                "goals": 0.1238,
                "goal_rate": 0.1238,
                "shots_on_target": 0.3759,
                "total_shots": 1.312,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.0476,
                "accurate_pass": 36.2552,
                "duels_won": 3.5377,
                "total_long_balls": 2.5832,
                "accurate_long_balls": 1.676,
                "total_own_half_passes": 19.3208,
                "accurate_own_half_passes": 17.4543,
                "total_opp_half_passes": 21.7267,
                "accurate_opp_half_passes": 18.8008,
                "crosses_total": 0.1874,
                "crosses_accurate": 0.0258,
                "touches": 53.9616,
                "possession_lost": 7.7685,
                "dispossessed": 0.8085,
                "duels_lost": 4.2501,
                "aerial_won": 0.3104,
                "aerial_lost": 1.115,
                "interceptions": 0.7783,
                "tackles_won": 0.6486,
                "tackles": 1.3687,
                "clearances": 0.8753,
                "total_contest": 1.9005,
                "won_contest": 0.7722,
                "challenges_lost": 0.5493,
                "fouls": 0.6746,
                "fouls_drawn": 1.0863,
                "blocks": 0.1435,
                "big_chances_created": 0.0359,
                "big_chances_missed": 0.0,
                "xgot": 0.1699,
                "ball_carries": 16.3964,
                "total_progression": 30.6906,
                "progressive_carries": 0.6485,
                "shots_off_target": 0.9361
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1507,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1281,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1089,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0787,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0669,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0568,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Liverpool FC",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.5391,
                  "creative_index": 0.2375,
                  "expectedGoals": 0.1087,
                  "expectedAssists": 0.0346,
                  "onTargetScoringAttempt": 0.425
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7299686074256897,
                    "model_output": 0.73,
                    "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.1058
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0974
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0709
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0547
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0284
                        }
                      ],
                      "others": 0.0062,
                      "total": 0.73,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.127151
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117657
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.084207
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.070201
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.038506
                        }
                      ],
                      "others_margin": 0.00847
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.052337344735860825,
                    "model_output": 0.0523,
                    "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.0189
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0105
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0084
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0069
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0023,
                      "total": 0.0523,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.24892
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.170067
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.139356
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.112199
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.058268
                        }
                      ],
                      "others_margin": -0.0439
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.055314429104328156,
                    "model_output": 0.0553,
                    "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.0123
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0065
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.006
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0084,
                      "total": 0.0553,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.156189
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.093966
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.086804
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.072963
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.055579
                        }
                      ],
                      "others_margin": -0.140424
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10778828710317612,
                    "model_output": 0.1078,
                    "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.0157
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0137
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0121
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.009
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0055
                        }
                      ],
                      "others": -0.0002,
                      "total": 0.1078,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.181909
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.159998
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.123439
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.082344
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.049292
                        }
                      ],
                      "others_margin": -0.002247
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.1237988993525505,
                    "model_output": 0.1238,
                    "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.0311
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0219
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0122
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0059
                        }
                      ],
                      "others": -0.0007,
                      "total": 0.1238,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.276513
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.18654
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.1012
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.097974
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.046427
                        }
                      ],
                      "others_margin": -0.005402
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3759365677833557,
                    "model_output": 0.3759,
                    "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.0944
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0591
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0493
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0294
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0218
                        }
                      ],
                      "others": -0.0403,
                      "total": 0.3759,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.255741
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.152304
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128521
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.069526
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.050982
                        }
                      ],
                      "others_margin": -0.101798
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.3120205402374268,
                    "model_output": 1.312,
                    "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.2972
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1559
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0641
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0418
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0254
                        }
                      ],
                      "others": -0.0003,
                      "total": 1.312,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.297248
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.155915
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.064147
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.041805
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.025382
                        }
                      ],
                      "others_margin": -0.000272
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.831671237945557,
                    "model_output": 6.8317,
                    "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.03
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0201
                        },
                        {
                          "name": "rating",
                          "contribution": -0.014
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0058
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0058
                        }
                      ],
                      "others": -0.0247,
                      "total": 6.8317,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.029979
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.020103
                        },
                        {
                          "name": "rating",
                          "margin": -0.014012
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.005847
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.005767
                        }
                      ],
                      "others_margin": -0.024679
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 33,
                  "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.0100, quality 0.758)",
              "stats": {
                "key_pass": 0.7373,
                "expected_assists": 0.0529,
                "assists": 0.0559,
                "assist_rate": 0.0559,
                "expected_goals": 0.1089,
                "goals": 0.125,
                "goal_rate": 0.125,
                "shots_on_target": 0.3797,
                "total_shots": 1.3252,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1893,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.3135,
                "aerial_lost": 1.1261,
                "interceptions": 0.7861,
                "tackles_won": 0.6551,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6813,
                "fouls_drawn": 1.0972,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1716,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9455
              },
              "params": {
                "market_value_eur": 36000000,
                "quality_factor": 0.7581,
                "boost_factor": 1.01,
                "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": {
                "key_pass": 0.7373,
                "expected_assists": 0.0529,
                "assists": 0.0557,
                "assist_rate": 0.0557,
                "expected_goals": 0.1089,
                "goals": 0.1245,
                "goal_rate": 0.1245,
                "shots_on_target": 0.3782,
                "total_shots": 1.3308,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.3135,
                "aerial_lost": 1.1261,
                "interceptions": 0.783,
                "tackles_won": 0.6525,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6895,
                "fouls_drawn": 1.0983,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1716,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9455
              },
              "params": {
                "blend_weight": 0.004,
                "history_matches": 33,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9579,
                "prior_reliability": 0.0467,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.6813,
                  "after": 0.6895
                },
                {
                  "stat": "totalShots",
                  "before": 1.3252,
                  "after": 1.3308
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7373,
                "expected_assists": 0.0529,
                "assists": 0.0557,
                "assist_rate": 0.0557,
                "expected_goals": 0.1089,
                "goals": 0.1245,
                "goal_rate": 0.1245,
                "shots_on_target": 0.3782,
                "total_shots": 1.3308,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.3135,
                "aerial_lost": 1.1261,
                "interceptions": 0.783,
                "tackles_won": 0.6525,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6895,
                "fouls_drawn": 1.0983,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1716,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9455
              },
              "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.7373,
                "expected_assists": 0.0529,
                "assists": 0.0557,
                "assist_rate": 0.0557,
                "expected_goals": 0.1134,
                "goals": 0.1296,
                "goal_rate": 0.1296,
                "shots_on_target": 0.3937,
                "total_shots": 1.3852,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.8,
                "aerial_lost": 1.1261,
                "interceptions": 0.783,
                "tackles_won": 0.6525,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6895,
                "fouls_drawn": 1.0983,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1786,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9842,
                "duel_xg_multiplier": 1.0409,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Enzo Le Fée",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.448,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0409,
                  "skill_edge": 0.0318,
                  "height_edge": -0.004,
                  "attacker_skill": 0.7926,
                  "defender_skill": 0.7219,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Enzo Le Fée",
                      "market_value": 26000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7219
                    }
                  ],
                  "xg_override": 0.1134
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.3135,
                  "after": 0.8
                },
                {
                  "stat": "totalShots",
                  "before": 1.3308,
                  "after": 1.3852
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9455,
                  "after": 0.9842
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3782,
                  "after": 0.3937
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1716,
                  "after": 0.1786
                },
                {
                  "stat": "goals",
                  "before": 0.1245,
                  "after": 0.1296
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "key_pass": 0.7373,
                "expected_assists": 0.059,
                "assist_rate": 0.0557,
                "assists": 0,
                "expected_goals": 0.1264,
                "goal_rate": 0.1296,
                "goals": 0,
                "shots_on_target": 0.3937,
                "total_shots": 1.3852,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.8,
                "aerial_lost": 1.1261,
                "interceptions": 0.783,
                "tackles_won": 0.6525,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6895,
                "fouls_drawn": 1.0983,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1991,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9842,
                "duel_xg_multiplier": 1.0409,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0991,
                "creation_factor": 1.0272
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1134,
                  "after": 0.1264
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0529,
                  "after": 0.059
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 10 by projected rating, fifa_overall 79.0; not used by the projection)",
              "stats": {
                "key_pass": 0.7373,
                "expected_assists": 0.059,
                "assist_rate": 0.0557,
                "assists": 0,
                "expected_goals": 0.1264,
                "goal_rate": 0.1296,
                "goals": 0,
                "shots_on_target": 0.3937,
                "total_shots": 1.3852,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.8,
                "aerial_lost": 1.1261,
                "interceptions": 0.783,
                "tackles_won": 0.6525,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6895,
                "fouls_drawn": 1.0983,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1991,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9842,
                "duel_xg_multiplier": 1.0409,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0991,
                "creation_factor": 1.0272,
                "fifa_overall": 79.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": 1829,
                "fifa_rank": 877.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.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.7373,
                "expected_assists": 0.059,
                "assist_rate": 0.0557,
                "assists": 0,
                "expected_goals": 0.1264,
                "goal_rate": 0.1296,
                "goals": 0,
                "shots_on_target": 0.3937,
                "total_shots": 1.3852,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.8,
                "aerial_lost": 1.1261,
                "interceptions": 0.783,
                "tackles_won": 0.6525,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6895,
                "fouls_drawn": 1.0983,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1991,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9842,
                "duel_xg_multiplier": 1.0409,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1187,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0991,
                "creation_factor": 1.0272,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.1187,
                "scorer_weight": 0.1389,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0824,
                "finishing_factor": 1.0991,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.7373,
                "expected_assists": 0.059,
                "assist_rate": 0.0557,
                "assists": 0,
                "expected_goals": 0.1264,
                "goal_rate": 0.1296,
                "goals": 0,
                "shots_on_target": 0.3937,
                "total_shots": 1.3852,
                "rating": 6.8317,
                "minutes": 86.21,
                "total_pass": 41.4581,
                "accurate_pass": 36.6178,
                "duels_won": 3.5731,
                "total_long_balls": 2.609,
                "accurate_long_balls": 1.6928,
                "total_own_half_passes": 19.514,
                "accurate_own_half_passes": 17.6288,
                "total_opp_half_passes": 21.944,
                "accurate_opp_half_passes": 18.9888,
                "crosses_total": 0.1885,
                "crosses_accurate": 0.0261,
                "touches": 54.5012,
                "possession_lost": 7.8462,
                "dispossessed": 0.8166,
                "duels_lost": 4.2926,
                "aerial_won": 0.8,
                "aerial_lost": 1.1261,
                "interceptions": 0.783,
                "tackles_won": 0.6525,
                "tackles": 1.3824,
                "clearances": 0.8841,
                "total_contest": 1.9195,
                "won_contest": 0.7799,
                "challenges_lost": 0.5548,
                "fouls": 0.6895,
                "fouls_drawn": 1.0983,
                "blocks": 0.1449,
                "big_chances_created": 0.0363,
                "big_chances_missed": 0.0,
                "xgot": 0.1991,
                "ball_carries": 16.5604,
                "total_progression": 30.9975,
                "progressive_carries": 0.655,
                "shots_off_target": 0.9842,
                "duel_xg_multiplier": 1.0409,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Enzo Le Fée",
                "opponent_faced": "Enzo Le Fée",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1187,
                "projected_assists": 0,
                "assist_probability": 0.0573,
                "finishing_factor": 1.0991,
                "creation_factor": 1.0272,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0573,
                "provider_weight": 0.0606,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0509,
                "creation_factor": 1.0272,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Pascal Groß": {
          "player_id": 48480,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 13,
          "height": 181,
          "market_value": 2300000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.2097,
            "assist_rate": 0.2354,
            "assists": 0,
            "expected_goals": 0.2143,
            "goal_rate": 0.2423,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 7.2928,
            "minutes": 90,
            "total_pass": 62,
            "accurate_pass": 54,
            "duels_won": 2,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 24,
            "accurate_own_half_passes": 22,
            "total_opp_half_passes": 38,
            "accurate_opp_half_passes": 32,
            "crosses_total": 7,
            "crosses_accurate": 2,
            "touches": 79,
            "possession_lost": 14.4178,
            "dispossessed": 0.5953,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.163,
            "ball_carries": 24,
            "total_progression": 83,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8385,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.0,
            "crosses_attempted": 1.9,
            "duel_win_rate": 0.37,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Omar Alderete",
            "opponent_faced": "Omar Alderete",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 1,
            "goal_probability": 0.1929,
            "projected_assists": 0,
            "assist_probability": 0.1892,
            "finishing_factor": 1.2069,
            "creation_factor": 1.1987,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1074,
                "expected_assists": 0.2506,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 32,
                "accurate_pass": 25,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 8.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_goals": 0.8227,
                "expected_assists": 0.1883,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 93,
                "accurate_pass": 87,
                "key_pass": 6,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 2,
                "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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7936,
                "expected_assists": 0.0372,
                "total_shots": 5,
                "shots_off_target": 4,
                "total_pass": 54,
                "accurate_pass": 45,
                "key_pass": 1,
                "interceptions": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0529,
                "expected_assists": 0.1094,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 63,
                "accurate_pass": 55,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2684,
                "total_shots": 0,
                "total_pass": 77,
                "accurate_pass": 72,
                "key_pass": 4,
                "tackles": 3,
                "tackles_won": 1,
                "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": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1146,
                "expected_assists": 0.15,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 58,
                "accurate_pass": 49,
                "interceptions": 1,
                "clearances": 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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0305,
                "expected_assists": 0.485,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 68,
                "accurate_pass": 61,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2306,
                "expected_assists": 0.1685,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 72,
                "accurate_pass": 63,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 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"
            },
            {
              "match_id": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1847,
                "expected_assists": 0.0532,
                "total_shots": 1,
                "total_pass": 78,
                "accurate_pass": 71,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 1,
                "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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0598,
                "expected_assists": 0.2009,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 56,
                "accurate_pass": 48,
                "key_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1101,
            "combined_rank_score": 493.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 138.0,
            "sofascore_rating": 7.35,
            "sofascore_appearances": 2.0,
            "fifa_rank": 849.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2928,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pascal Groß",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Víctor Muñoz",
                  "ranking": 1096
                },
                {
                  "player_name": "Merih Demiral",
                  "ranking": 1097
                },
                {
                  "player_name": "César Azpilicueta",
                  "ranking": 1098
                },
                {
                  "player_name": "Sardor Mirzayev",
                  "ranking": 1099
                },
                {
                  "player_name": "Mukhammadkodir Khamraliev",
                  "ranking": 1100
                }
              ],
              "lower": [
                {
                  "player_name": "Alberto Moleiro",
                  "ranking": 1102
                },
                {
                  "player_name": "Angelo Stiller",
                  "ranking": 1103
                },
                {
                  "player_name": "Mauro Júnior",
                  "ranking": 1104
                },
                {
                  "player_name": "Konstantinos Tzolakis",
                  "ranking": 1105
                },
                {
                  "player_name": "Pau Torres",
                  "ranking": 1106
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 24,
          "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": 24,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9965,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.5,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 24 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Brighton, rel: 0.13, gls/90: 0.5, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 2.3644,
                "expected_assists": 0.1888,
                "assists": 0.2398,
                "assist_rate": 0.2398,
                "expected_goals": 0.23,
                "goals": 0.2868,
                "goal_rate": 0.2868,
                "shots_on_target": 0.6579,
                "total_shots": 1.6699,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.9216,
                "accurate_pass": 54.4405,
                "duels_won": 2.328,
                "total_long_balls": 5.0768,
                "accurate_long_balls": 2.2277,
                "total_own_half_passes": 23.7643,
                "accurate_own_half_passes": 22.4373,
                "total_opp_half_passes": 38.1573,
                "accurate_opp_half_passes": 32.0032,
                "crosses_total": 6.5833,
                "crosses_accurate": 1.6777,
                "touches": 79.4632,
                "possession_lost": 14.4684,
                "dispossessed": 0.5974,
                "duels_lost": 3.8757,
                "aerial_won": 0.6929,
                "aerial_lost": 0.807,
                "interceptions": 0.7529,
                "tackles_won": 0.9758,
                "tackles": 1.3772,
                "clearances": 0.9638,
                "total_contest": 0.2671,
                "won_contest": 0.1123,
                "challenges_lost": 1.1631,
                "fouls": 1.2611,
                "fouls_drawn": 0.1456,
                "blocks": 0.1496,
                "big_chances_created": 0.6092,
                "big_chances_missed": 0.1164,
                "xgot": 0.175,
                "ball_carries": 24.361,
                "total_progression": 82.8301,
                "progressive_carries": 1.0691,
                "shots_off_target": 1.012
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1531,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1301,
                    "rating": 8.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1106,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.094,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0799,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0679,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0577,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0491,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0417,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0355,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 1.6954,
                  "creative_index": 1.1634,
                  "expectedGoals": 0.2539,
                  "expectedAssists": 0.1937,
                  "onTargetScoringAttempt": 0.6812
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 2.3644468784332275,
                    "model_output": 2.3644,
                    "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": "creative_index",
                          "contribution": 0.2139
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1458
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1463
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.1342
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0994
                        }
                      ],
                      "others": 0.7386,
                      "total": 2.3644,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.216184
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124451
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.111013
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.092006
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.063097
                        }
                      ],
                      "others_margin": 0.374609
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.18876104056835175,
                    "model_output": 0.1888,
                    "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": "expectedAssists",
                          "contribution": 0.0169
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0148
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.014
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0072
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0067
                        }
                      ],
                      "others": 0.0434,
                      "total": 0.1888,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.179683
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.134798
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11225
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.053335
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.046958
                        }
                      ],
                      "others_margin": 0.261752
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.23982104659080505,
                    "model_output": 0.2398,
                    "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": "keyPass",
                          "contribution": 0.0245
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0203
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.017
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0156
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.015
                        }
                      ],
                      "others": 0.0622,
                      "total": 0.2398,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "keyPass",
                          "margin": 0.252812
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.169805
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.123058
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.100566
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.088312
                        }
                      ],
                      "others_margin": 0.299992
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.22998030483722687,
                    "model_output": 0.23,
                    "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.056
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0287
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0243
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0212
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0195
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.23,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.46565
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.174794
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127121
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.099132
                        },
                        {
                          "name": "touches",
                          "margin": 0.08311
                        }
                      ],
                      "others_margin": -0.059651
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2868267893791199,
                    "model_output": 0.2868,
                    "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.0459
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0309
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0195
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0146
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0121
                        }
                      ],
                      "others": 0.0662,
                      "total": 0.2868,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.384977
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.195256
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.106201
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.07268
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.056423
                        }
                      ],
                      "others_margin": 0.262
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.657853901386261,
                    "model_output": 0.6579,
                    "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.1123
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.1113
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0611
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0279
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0249
                        }
                      ],
                      "others": 0.0522,
                      "total": 0.6579,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.29761
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.227265
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.10578
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.046944
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.041929
                        }
                      ],
                      "others_margin": 0.082626
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.6698893308639526,
                    "model_output": 1.6699,
                    "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.3914
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1565
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.1021
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0702
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0588
                        }
                      ],
                      "others": 0.018,
                      "total": 1.6699,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.391386
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.156511
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.10212
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.070172
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.05881
                        }
                      ],
                      "others_margin": 0.018046
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.292761325836182,
                    "model_output": 7.2928,
                    "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.1373
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0942
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0728
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0469
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0454
                        }
                      ],
                      "others": 0.1411,
                      "total": 7.2928,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.137253
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.094183
                        },
                        {
                          "name": "touches",
                          "margin": 0.072798
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.046883
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.045449
                        }
                      ],
                      "others_margin": 0.141091
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 24,
                  "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 0.9965, quality 0.437)",
              "stats": {
                "key_pass": 2.3562,
                "expected_assists": 0.1881,
                "assists": 0.239,
                "assist_rate": 0.239,
                "expected_goals": 0.2292,
                "goals": 0.2858,
                "goal_rate": 0.2858,
                "shots_on_target": 0.6556,
                "total_shots": 1.6641,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5603,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 0.6905,
                "aerial_lost": 0.8042,
                "interceptions": 0.7503,
                "tackles_won": 0.9724,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2567,
                "fouls_drawn": 0.1451,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.116,
                "xgot": 0.1744,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 1.0085
              },
              "params": {
                "market_value_eur": 2300000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9965,
                "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": {
                "key_pass": 2.3562,
                "expected_assists": 0.1881,
                "assists": 0.2354,
                "assist_rate": 0.2354,
                "expected_goals": 0.2292,
                "goals": 0.289,
                "goal_rate": 0.289,
                "shots_on_target": 0.6532,
                "total_shots": 1.6467,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5962,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 0.6905,
                "aerial_lost": 0.8042,
                "interceptions": 0.7391,
                "tackles_won": 0.9728,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2602,
                "fouls_drawn": 0.1429,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.116,
                "xgot": 0.1744,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 1.0085
              },
              "params": {
                "blend_weight": 0.0149,
                "history_matches": 24,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9962,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 6.5603,
                  "after": 6.5962
                },
                {
                  "stat": "totalShots",
                  "before": 1.6641,
                  "after": 1.6467
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.7503,
                  "after": 0.7391
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 2.3562,
                "expected_assists": 0.1881,
                "assists": 0.2354,
                "assist_rate": 0.2354,
                "expected_goals": 0.2292,
                "goals": 0.289,
                "goal_rate": 0.289,
                "shots_on_target": 0.6532,
                "total_shots": 1.6617,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5962,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 0.6905,
                "aerial_lost": 0.8042,
                "interceptions": 0.7391,
                "tackles_won": 0.9728,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2602,
                "fouls_drawn": 0.1429,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.116,
                "xgot": 0.1744,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 1.0085
              },
              "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": 2.3562,
                "expected_assists": 0.1881,
                "assists": 0.2354,
                "assist_rate": 0.2354,
                "expected_goals": 0.1922,
                "goals": 0.2423,
                "goal_rate": 0.2423,
                "shots_on_target": 0.5477,
                "total_shots": 1.3933,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5962,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 1.1,
                "aerial_lost": 0.8042,
                "interceptions": 0.7391,
                "tackles_won": 0.9728,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2602,
                "fouls_drawn": 0.1429,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.0973,
                "xgot": 0.1462,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 0.8456,
                "duel_xg_multiplier": 0.8385,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.37,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar Alderete",
                "opponent_faced": "Omar Alderete",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Omar Alderete",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                  "duel_win_rate": 0.37,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.8385,
                  "skill_edge": -0.0859,
                  "height_edge": -0.024,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.6282,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Omar Alderete",
                      "market_value": 13800000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.6282
                    }
                  ],
                  "xg_override": 0.1922
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.6905,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 1.6617,
                  "after": 1.3933
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.0085,
                  "after": 0.8456
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6532,
                  "after": 0.5477
                },
                {
                  "stat": "goals",
                  "before": 0.289,
                  "after": 0.2423
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2292,
                  "after": 0.1922
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1744,
                  "after": 0.1462
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.116,
                  "after": 0.0973
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "key_pass": 2.3562,
                "expected_assists": 0.2097,
                "assist_rate": 0.2354,
                "assists": 0,
                "expected_goals": 0.2143,
                "goal_rate": 0.2423,
                "goals": 0,
                "shots_on_target": 0.5477,
                "total_shots": 1.3933,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5962,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 1.1,
                "aerial_lost": 0.8042,
                "interceptions": 0.7391,
                "tackles_won": 0.9728,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2602,
                "fouls_drawn": 0.1429,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.0973,
                "xgot": 0.163,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 0.8456,
                "duel_xg_multiplier": 0.8385,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.37,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar Alderete",
                "opponent_faced": "Omar Alderete",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2069,
                "creation_factor": 1.1987
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1922,
                  "after": 0.2143
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1881,
                  "after": 0.2097
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 1 by projected rating, fifa_overall 79.0; not used by the projection)",
              "stats": {
                "key_pass": 2.3562,
                "expected_assists": 0.2097,
                "assist_rate": 0.2354,
                "assists": 0,
                "expected_goals": 0.2143,
                "goal_rate": 0.2423,
                "goals": 0,
                "shots_on_target": 0.5477,
                "total_shots": 1.3933,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5962,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 1.1,
                "aerial_lost": 0.8042,
                "interceptions": 0.7391,
                "tackles_won": 0.9728,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2602,
                "fouls_drawn": 0.1429,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.0973,
                "xgot": 0.163,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 0.8456,
                "duel_xg_multiplier": 0.8385,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.37,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar Alderete",
                "opponent_faced": "Omar Alderete",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2069,
                "creation_factor": 1.1987,
                "fifa_overall": 79.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": 1101,
                "fifa_rank": 849.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 2 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 2.3562,
                "expected_assists": 0.2097,
                "assist_rate": 0.2354,
                "assists": 0,
                "expected_goals": 0.2143,
                "goal_rate": 0.2423,
                "goals": 1,
                "shots_on_target": 0.5477,
                "total_shots": 1.3933,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5962,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 1.1,
                "aerial_lost": 0.8042,
                "interceptions": 0.7391,
                "tackles_won": 0.9728,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2602,
                "fouls_drawn": 0.1429,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.0973,
                "xgot": 0.163,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 0.8456,
                "duel_xg_multiplier": 0.8385,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.37,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar Alderete",
                "opponent_faced": "Omar Alderete",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 1,
                "goal_probability": 0.1929,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2069,
                "creation_factor": 1.1987,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 1,
                "goal_probability": 0.1929,
                "scorer_weight": 0.2586,
                "squad_weight_total": 1.6857,
                "weight_share": 0.1534,
                "finishing_factor": 1.2069,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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": 2.3562,
                "expected_assists": 0.2097,
                "assist_rate": 0.2354,
                "assists": 0,
                "expected_goals": 0.2143,
                "goal_rate": 0.2423,
                "goals": 1,
                "shots_on_target": 0.5477,
                "total_shots": 1.3933,
                "rating": 7.2928,
                "minutes": 89.66,
                "total_pass": 61.7049,
                "accurate_pass": 54.25,
                "duels_won": 2.3199,
                "total_long_balls": 5.059,
                "accurate_long_balls": 2.2199,
                "total_own_half_passes": 23.6811,
                "accurate_own_half_passes": 22.3588,
                "total_opp_half_passes": 38.0237,
                "accurate_opp_half_passes": 31.8912,
                "crosses_total": 6.5962,
                "crosses_accurate": 1.6718,
                "touches": 79.1851,
                "possession_lost": 14.4178,
                "dispossessed": 0.5953,
                "duels_lost": 3.8621,
                "aerial_won": 1.1,
                "aerial_lost": 0.8042,
                "interceptions": 0.7391,
                "tackles_won": 0.9728,
                "tackles": 1.3724,
                "clearances": 0.9604,
                "total_contest": 0.2662,
                "won_contest": 0.1119,
                "challenges_lost": 1.159,
                "fouls": 1.2602,
                "fouls_drawn": 0.1429,
                "blocks": 0.1491,
                "big_chances_created": 0.6071,
                "big_chances_missed": 0.0973,
                "xgot": 0.163,
                "ball_carries": 24.2757,
                "total_progression": 82.5402,
                "progressive_carries": 1.0654,
                "shots_off_target": 0.8456,
                "duel_xg_multiplier": 0.8385,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.37,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Omar Alderete",
                "opponent_faced": "Omar Alderete",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 1,
                "goal_probability": 0.1929,
                "projected_assists": 0,
                "assist_probability": 0.1892,
                "finishing_factor": 1.2069,
                "creation_factor": 1.1987,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1892,
                "provider_weight": 0.2514,
                "squad_weight_total": 1.1906,
                "weight_share": 0.2111,
                "creation_factor": 1.1987,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Olivier Boscagli": {
          "player_id": 788784,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 21,
          "height": 181,
          "market_value": 13900000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 7.0496,
            "minutes": 88,
            "total_pass": 65,
            "accurate_pass": 55,
            "duels_won": 4,
            "total_long_balls": 8,
            "accurate_long_balls": 4,
            "total_own_half_passes": 32,
            "accurate_own_half_passes": 28,
            "total_opp_half_passes": 33,
            "accurate_opp_half_passes": 27,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 83,
            "possession_lost": 13.309,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0275,
            "assists": 0,
            "expected_goals": 0.0094,
            "expected_assists": 0.0867,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0483,
            "ball_carries": 22,
            "total_progression": 83,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 1,
            "tackles_in_zone": 2.0,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.56,
            "opponent_faced": "Granit Xhaka",
            "pressing_zone": "Left Wing vs Right Back — Flank Battle",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0094,
            "projected_assists": 0,
            "assist_probability": 0.083,
            "finishing_factor": 0.8562,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0096,
                "expected_assists": 0.02,
                "total_shots": 1,
                "total_pass": 25,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 78,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0115,
                "expected_assists": 0.0307,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 46,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 4,
                "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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 89,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3273,
                "total_shots": 0,
                "total_pass": 64,
                "accurate_pass": 51,
                "key_pass": 5,
                "clearances": 4,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0498,
                "expected_assists": 0.108,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 82,
                "accurate_pass": 67,
                "key_pass": 1,
                "interceptions": 1,
                "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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0373,
                "total_shots": 0,
                "total_pass": 66,
                "accurate_pass": 65,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0711,
                "total_shots": 0,
                "total_pass": 93,
                "accurate_pass": 79,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 4,
                "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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.026,
                "total_shots": 0,
                "total_pass": 85,
                "accurate_pass": 75,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "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": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0385,
                "total_shots": 0,
                "total_pass": 76,
                "accurate_pass": 65,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 4,
                "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": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.018,
                "total_shots": 0,
                "total_pass": 82,
                "accurate_pass": 69,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 6,
                "clearances": 9,
                "aerial_won": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023933,
              "match_date": "2026-03-04",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0695,
                "total_shots": 0,
                "total_pass": 89,
                "accurate_pass": 72,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 5,
                "duels_won": 9,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1548,
            "combined_rank_score": 631.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 172.0,
            "sofascore_rating": 7.25,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1090.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0496,
            "source_file": "data/player_rankings.csv",
            "player_name": "Olivier Boscagli",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nam Ha",
                  "ranking": 1543
                },
                {
                  "player_name": "Alisher Salimov",
                  "ranking": 1544
                },
                {
                  "player_name": "Bu-Seong Jang",
                  "ranking": 1545
                },
                {
                  "player_name": "Her Dong-min",
                  "ranking": 1546
                },
                {
                  "player_name": "Filip Jørgensen",
                  "ranking": 1547
                }
              ],
              "lower": [
                {
                  "player_name": "Bernd Leno",
                  "ranking": 1549
                },
                {
                  "player_name": "Fredrik Aursnes",
                  "ranking": 1550
                },
                {
                  "player_name": "Yuri Berchiche",
                  "ranking": 1551
                },
                {
                  "player_name": "Óscar Trejo",
                  "ranking": 1552
                },
                {
                  "player_name": "Han Jong-Mu",
                  "ranking": 1553
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "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.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0042,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "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 17 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Brighton, 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.1217,
                "tackles": 1.4864,
                "tackles_won": 0.9583,
                "clearances": 3.5907,
                "aerial_won": 1.4342,
                "total_shots": 0.6229,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 64.8328,
                "accurate_pass": 54.9484,
                "duels_won": 4.3159,
                "total_long_balls": 7.8139,
                "accurate_long_balls": 4.0604,
                "total_own_half_passes": 31.6323,
                "accurate_own_half_passes": 28.3457,
                "total_opp_half_passes": 33.2006,
                "accurate_opp_half_passes": 26.6028,
                "crosses_total": 2.9357,
                "crosses_accurate": 0.7806,
                "touches": 82.423,
                "possession_lost": 13.2533,
                "dispossessed": 0.0,
                "duels_lost": 4.161,
                "aerial_lost": 1.9578,
                "total_contest": 0.0716,
                "won_contest": 0.0716,
                "ball_recovery": 4.1217,
                "challenges_lost": 0.8815,
                "fouls": 1.3217,
                "fouls_drawn": 1.3772,
                "blocks": 0.2006,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.028,
                "assist_rate": 0.028,
                "expected_goals": 0.0084,
                "expected_assists": 0.0775,
                "shots_on_target": 0.1027,
                "big_chances_created": 0.2325,
                "xgot": 0.0431,
                "ball_carries": 21.8822,
                "total_progression": 82.317,
                "progressive_carries": 0.965,
                "key_pass": 0.9964,
                "shots_off_target": 0.5202
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1601,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1361,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1157,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0983,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0836,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.071,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0604,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0513,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0436,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-03-04",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0371,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 17.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.5801,
                  "aerialWon": 1.5644,
                  "totalClearance_p90": 3.8467,
                  "totalTackle": 1.139,
                  "totalPass": 61.4932
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1216914653778076,
                    "model_output": 1.1217,
                    "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.12
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0731
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0346
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0188
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0148
                        }
                      ],
                      "others": 0.0031,
                      "total": 1.1217,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130964
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.072141
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.032424
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.017175
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.013288
                        }
                      ],
                      "others_margin": 0.002845
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.486371397972107,
                    "model_output": 1.4864,
                    "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.165
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0913
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0619
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0518
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0443
                        }
                      ],
                      "others": -0.0356,
                      "total": 1.4864,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.111858
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.060377
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.041326
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.034424
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.029527
                        }
                      ],
                      "others_margin": -0.023661
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9582981467247009,
                    "model_output": 0.9583,
                    "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.0978
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.046
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0467
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0418
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0314
                        }
                      ],
                      "others": -0.0134,
                      "total": 0.9583,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.108375
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.047156
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.045713
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.040845
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.031766
                        }
                      ],
                      "others_margin": -0.013816
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.5907328128814697,
                    "model_output": 3.5907,
                    "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.4457
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3227
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2801
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1385
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.114
                        }
                      ],
                      "others": -0.2393,
                      "total": 3.5907,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121443
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086435
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.075434
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.036607
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.030228
                        }
                      ],
                      "others_margin": -0.06449
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.434181809425354,
                    "model_output": 1.4342,
                    "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.1593
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0882
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0823
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0573
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0569
                        }
                      ],
                      "others": -0.1126,
                      "total": 1.4342,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.109112
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.055651
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.051797
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.037724
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.037468
                        }
                      ],
                      "others_margin": -0.07567
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.622850775718689,
                    "model_output": 0.6229,
                    "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.0682
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0348
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0228
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0176
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0175
                        }
                      ],
                      "others": -0.0091,
                      "total": 0.6229,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.068169
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.034796
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.022841
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.017642
                        },
                        {
                          "name": "rating",
                          "margin": 0.017534
                        }
                      ],
                      "others_margin": -0.009263
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.049643516540527,
                    "model_output": 7.0496,
                    "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": "totalPass",
                          "contribution": 0.0686
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0501
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0466
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0355
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0281
                        }
                      ],
                      "others": 0.0356,
                      "total": 7.0496,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.068594
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.050053
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.046613
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.035473
                        },
                        {
                          "name": "rating",
                          "margin": 0.028057
                        }
                      ],
                      "others_margin": 0.035722
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 17,
                  "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.0042, quality 0.567)",
              "stats": {
                "interceptions": 1.1264,
                "tackles": 1.4926,
                "tackles_won": 0.9623,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.6255,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.948,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3273,
                "fouls_drawn": 1.383,
                "blocks": 0.2014,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0281,
                "assist_rate": 0.0281,
                "expected_goals": 0.0084,
                "expected_assists": 0.0778,
                "shots_on_target": 0.1031,
                "big_chances_created": 0.2335,
                "xgot": 0.0433,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224
              },
              "params": {
                "market_value_eur": 13900000,
                "quality_factor": 0.5671,
                "boost_factor": 1.0042,
                "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.0197)",
              "stats": {
                "interceptions": 1.133,
                "tackles": 1.4926,
                "tackles_won": 0.9529,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.6228,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.9378,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3395,
                "fouls_drawn": 1.3845,
                "blocks": 0.2014,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0275,
                "assist_rate": 0.0275,
                "expected_goals": 0.0084,
                "expected_assists": 0.0778,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.2335,
                "xgot": 0.0433,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224
              },
              "params": {
                "blend_weight": 0.0197,
                "history_matches": 17,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9729,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.3273,
                  "after": 1.3395
                },
                {
                  "stat": "totalCross",
                  "before": 2.948,
                  "after": 2.9378
                },
                {
                  "stat": "wonTackle",
                  "before": 0.9623,
                  "after": 0.9529
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1031,
                  "after": 0.1106
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1264,
                  "after": 1.133
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.133,
                "tackles": 1.4926,
                "tackles_won": 0.9529,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.633,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.9378,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3395,
                "fouls_drawn": 1.3845,
                "blocks": 0.2014,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0275,
                "assist_rate": 0.0275,
                "expected_goals": 0.0084,
                "expected_assists": 0.0778,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.2335,
                "xgot": 0.0433,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224
              },
              "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.133,
                "tackles": 1.4926,
                "tackles_won": 0.9529,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.633,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.9378,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3395,
                "fouls_drawn": 1.3845,
                "blocks": 0.2014,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0275,
                "assist_rate": 0.0275,
                "expected_goals": 0.0084,
                "expected_assists": 0.0778,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.2335,
                "xgot": 0.0433,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.56,
                "opponent_faced": "Granit Xhaka",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Granit Xhaka",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "interceptions": 1.133,
                "tackles": 1.4926,
                "tackles_won": 0.9529,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.633,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.9378,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3395,
                "fouls_drawn": 1.3845,
                "blocks": 0.2014,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0275,
                "assists": 0,
                "expected_goals": 0.0094,
                "expected_assists": 0.0867,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.2335,
                "xgot": 0.0483,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.56,
                "opponent_faced": "Granit Xhaka",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8562,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0778,
                  "after": 0.0867
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 5 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "interceptions": 1.133,
                "tackles": 1.4926,
                "tackles_won": 0.9529,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.633,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.9378,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3395,
                "fouls_drawn": 1.3845,
                "blocks": 0.2014,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0275,
                "assists": 0,
                "expected_goals": 0.0094,
                "expected_assists": 0.0867,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.2335,
                "xgot": 0.0483,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.56,
                "opponent_faced": "Granit Xhaka",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8562,
                "creation_factor": 0.8,
                "fifa_overall": 78.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": 1548,
                "fifa_rank": 1090.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": {
                "interceptions": 1.133,
                "tackles": 1.4926,
                "tackles_won": 0.9529,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.633,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.9378,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3395,
                "fouls_drawn": 1.3845,
                "blocks": 0.2014,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0275,
                "assists": 0,
                "expected_goals": 0.0094,
                "expected_assists": 0.0867,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.2335,
                "xgot": 0.0483,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.56,
                "opponent_faced": "Granit Xhaka",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0094,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8562,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0094,
                "scorer_weight": 0.008,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0048,
                "finishing_factor": 0.8562,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.133,
                "tackles": 1.4926,
                "tackles_won": 0.9529,
                "clearances": 3.6058,
                "aerial_won": 1.4402,
                "total_shots": 0.633,
                "rating": 7.0496,
                "minutes": 87.56,
                "total_pass": 65.1051,
                "accurate_pass": 55.1792,
                "duels_won": 4.334,
                "total_long_balls": 7.8467,
                "accurate_long_balls": 4.0775,
                "total_own_half_passes": 31.7652,
                "accurate_own_half_passes": 28.4648,
                "total_opp_half_passes": 33.34,
                "accurate_opp_half_passes": 26.7145,
                "crosses_total": 2.9378,
                "crosses_accurate": 0.7839,
                "touches": 82.7692,
                "possession_lost": 13.309,
                "dispossessed": 0.0,
                "duels_lost": 4.1785,
                "aerial_lost": 1.966,
                "total_contest": 0.0719,
                "won_contest": 0.0719,
                "ball_recovery": 4.139,
                "challenges_lost": 0.8852,
                "fouls": 1.3395,
                "fouls_drawn": 1.3845,
                "blocks": 0.2014,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0275,
                "assists": 0,
                "expected_goals": 0.0094,
                "expected_assists": 0.0867,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.2335,
                "xgot": 0.0483,
                "ball_carries": 21.9741,
                "total_progression": 82.6627,
                "progressive_carries": 0.9691,
                "key_pass": 1.0006,
                "shots_off_target": 0.5224,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.56,
                "opponent_faced": "Granit Xhaka",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0094,
                "projected_assists": 0,
                "assist_probability": 0.083,
                "finishing_factor": 0.8562,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.083,
                "provider_weight": 0.0694,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0583,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Lewis Dunk": {
          "player_id": 115365,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 190,
          "market_value": 3600000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 3,
            "total_shots": 1,
            "rating": 7.2877,
            "minutes": 90,
            "total_pass": 87,
            "accurate_pass": 80,
            "duels_won": 5,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 53,
            "accurate_own_half_passes": 51,
            "total_opp_half_passes": 33,
            "accurate_opp_half_passes": 29,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 98,
            "possession_lost": 7.3546,
            "dispossessed": 0.103,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.2107,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0542,
            "expected_assists": 0.0227,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0831,
            "ball_carries": 30,
            "total_progression": 107,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Nilson Angulo",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0528,
            "projected_assists": 0,
            "assist_probability": 0.0224,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 9.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0265,
                "expected_assists": 0.0284,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 94,
                "accurate_pass": 89,
                "tackles": 1,
                "clearances": 4,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0073,
                "total_shots": 0,
                "total_pass": 83,
                "accurate_pass": 71,
                "clearances": 11,
                "aerial_won": 7,
                "duels_won": 8,
                "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0087,
                "total_shots": 0,
                "total_pass": 99,
                "accurate_pass": 91,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0394,
                "total_shots": 0,
                "total_pass": 114,
                "accurate_pass": 109,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0288,
                "total_shots": 0,
                "total_pass": 81,
                "accurate_pass": 80,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "duels_won": 4,
                "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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2311,
                "expected_assists": 0.0127,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 92,
                "accurate_pass": 83,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 3,
                "duels_won": 4,
                "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": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3016,
                "expected_assists": 0.0101,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 103,
                "accurate_pass": 96,
                "clearances": 2,
                "aerial_won": 5,
                "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": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 9,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "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": 14024015,
              "match_date": "2026-03-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0052,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 42,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "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": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0462,
                "expected_assists": 0.0321,
                "total_shots": 1,
                "total_pass": 62,
                "accurate_pass": 56,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 9,
                "aerial_won": 4,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 2485,
            "combined_rank_score": 897.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 390.0,
            "sofascore_rating": 6.9515,
            "sofascore_appearances": 33.0,
            "fifa_rank": 1405.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2877,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lewis Dunk",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Emmet Shaw",
                  "ranking": 2480
                },
                {
                  "player_name": "Seung-min Moon",
                  "ranking": 2481
                },
                {
                  "player_name": "Leonardo Balerdi",
                  "ranking": 2482
                },
                {
                  "player_name": "Zoir Dzhuraboev",
                  "ranking": 2483
                },
                {
                  "player_name": "Tyler Morton",
                  "ranking": 2484
                }
              ],
              "lower": [
                {
                  "player_name": "Luca Tevere",
                  "ranking": 2486
                },
                {
                  "player_name": "Kyeong-jun Kim",
                  "ranking": 2487
                },
                {
                  "player_name": "Akramjon Komilov",
                  "ranking": 2488
                },
                {
                  "player_name": "Javier Nicolás Cárcamo",
                  "ranking": 2489
                },
                {
                  "player_name": "Kyeong Baek",
                  "ranking": 2490
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 37,
          "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": 37,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9979,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "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 37 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Brighton, 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.8583,
                "tackles": 1.0623,
                "tackles_won": 0.6737,
                "clearances": 4.894,
                "aerial_won": 2.7741,
                "total_shots": 0.5995,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.7041,
                "accurate_pass": 80.2257,
                "duels_won": 4.637,
                "total_long_balls": 5.6665,
                "accurate_long_balls": 2.5778,
                "total_own_half_passes": 53.2991,
                "accurate_own_half_passes": 51.3005,
                "total_opp_half_passes": 33.405,
                "accurate_opp_half_passes": 28.9252,
                "crosses_total": 0.245,
                "crosses_accurate": 0.0069,
                "touches": 97.9354,
                "possession_lost": 7.3701,
                "dispossessed": 0.1032,
                "duels_lost": 3.0077,
                "aerial_lost": 1.7371,
                "total_contest": 0.1444,
                "won_contest": 0.1444,
                "ball_recovery": 3.814,
                "challenges_lost": 0.5287,
                "fouls": 0.6468,
                "fouls_drawn": 0.5638,
                "blocks": 0.7528,
                "goals": 0.2133,
                "goal_rate": 0.2133,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0487,
                "expected_assists": 0.0204,
                "shots_on_target": 0.2524,
                "big_chances_created": 0.0159,
                "xgot": 0.0747,
                "ball_carries": 29.7193,
                "total_progression": 107.0665,
                "progressive_carries": 1.1061,
                "key_pass": 0.1518,
                "shots_off_target": 0.3471
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 9.1
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.1024,
                  "aerialWon": 2.8742,
                  "totalClearance_p90": 4.105,
                  "totalTackle": 0.8564,
                  "totalPass": 83.2756
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8582594990730286,
                    "model_output": 0.8583,
                    "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.1162
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0908
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0199
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0184
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.0162,
                      "total": 0.8583,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127152
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.097952
                        },
                        {
                          "name": "touches",
                          "margin": 0.022293
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.020559
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.011041
                        }
                      ],
                      "others_margin": -0.018742
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.062260389328003,
                    "model_output": 1.0623,
                    "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.1598
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1155
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0732
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0557
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0432
                        }
                      ],
                      "others": -0.2038,
                      "total": 1.0623,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.108543
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.077233
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.052239
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.041629
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.03352
                        }
                      ],
                      "others_margin": -0.175611
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6737021207809448,
                    "model_output": 0.6737,
                    "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.0836
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.069
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.057
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0452
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0355
                        }
                      ],
                      "others": -0.0576,
                      "total": 0.6737,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.093385
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.076405
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.067783
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.057261
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.047465
                        }
                      ],
                      "others_margin": -0.082025
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.894042015075684,
                    "model_output": 4.894,
                    "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.4145
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3635
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2734
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2369
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2253
                        }
                      ],
                      "others": -0.071,
                      "total": 4.894,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113418
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.089868
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.062636
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.051278
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.046433
                        }
                      ],
                      "others_margin": -0.014399
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.7741470336914062,
                    "model_output": 2.7741,
                    "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.6337
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2392
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1479
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.144
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0848
                        }
                      ],
                      "others": 0.1425,
                      "total": 2.7741,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.377417
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.112151
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.063522
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.058217
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.032744
                        }
                      ],
                      "others_margin": 0.052739
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5994765758514404,
                    "model_output": 0.5995,
                    "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.0553
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0384
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0343
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0254
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0191
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.5995,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.055325
                        },
                        {
                          "name": "rating",
                          "margin": 0.03835
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.034335
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.02544
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.019076
                        }
                      ],
                      "others_margin": -0.006029
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.2876667976379395,
                    "model_output": 7.2877,
                    "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": "totalOppositionHalfPasses",
                          "contribution": 0.0936
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0929
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.051
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.048
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0316
                        }
                      ],
                      "others": 0.1855,
                      "total": 7.2877,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.093603
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.092859
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.051012
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.048031
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.031601
                        }
                      ],
                      "others_margin": 0.185428
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 37,
                  "role_matches": 35,
                  "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.9979, quality 0.445)",
              "stats": {
                "interceptions": 0.8565,
                "tackles": 1.06,
                "tackles_won": 0.6723,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5983,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2445,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6454,
                "fouls_drawn": 0.5626,
                "blocks": 0.7512,
                "goals": 0.2129,
                "goal_rate": 0.2129,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0486,
                "expected_assists": 0.0204,
                "shots_on_target": 0.2519,
                "big_chances_created": 0.0159,
                "xgot": 0.0745,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464
              },
              "params": {
                "market_value_eur": 3600000,
                "quality_factor": 0.4449,
                "boost_factor": 0.9979,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0103)",
              "stats": {
                "interceptions": 0.858,
                "tackles": 1.06,
                "tackles_won": 0.6757,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5921,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2523,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6542,
                "fouls_drawn": 0.5671,
                "blocks": 0.7512,
                "goals": 0.2107,
                "goal_rate": 0.2107,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0486,
                "expected_assists": 0.0204,
                "shots_on_target": 0.2493,
                "big_chances_created": 0.0159,
                "xgot": 0.0745,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464
              },
              "params": {
                "blend_weight": 0.0103,
                "history_matches": 37,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.6454,
                  "after": 0.6542
                },
                {
                  "stat": "totalCross",
                  "before": 0.2445,
                  "after": 0.2523
                },
                {
                  "stat": "totalShots",
                  "before": 0.5983,
                  "after": 0.5921
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.858,
                "tackles": 1.06,
                "tackles_won": 0.6757,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5957,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2523,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6542,
                "fouls_drawn": 0.5671,
                "blocks": 0.7512,
                "goals": 0.2107,
                "goal_rate": 0.2107,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0486,
                "expected_assists": 0.0204,
                "shots_on_target": 0.2493,
                "big_chances_created": 0.0159,
                "xgot": 0.0745,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464
              },
              "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.858,
                "tackles": 1.06,
                "tackles_won": 0.6757,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5957,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2523,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6542,
                "fouls_drawn": 0.5671,
                "blocks": 0.7512,
                "goals": 0.2107,
                "goal_rate": 0.2107,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0486,
                "expected_assists": 0.0204,
                "shots_on_target": 0.2493,
                "big_chances_created": 0.0159,
                "xgot": 0.0745,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464,
                "opponent_faced": "Nilson Angulo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Nilson Angulo",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "interceptions": 0.858,
                "tackles": 1.06,
                "tackles_won": 0.6757,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5957,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2523,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6542,
                "fouls_drawn": 0.5671,
                "blocks": 0.7512,
                "goal_rate": 0.2107,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0227,
                "shots_on_target": 0.2493,
                "big_chances_created": 0.0159,
                "xgot": 0.0831,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464,
                "opponent_faced": "Nilson Angulo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0486,
                  "after": 0.0542
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 2 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "interceptions": 0.858,
                "tackles": 1.06,
                "tackles_won": 0.6757,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5957,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2523,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6542,
                "fouls_drawn": 0.5671,
                "blocks": 0.7512,
                "goal_rate": 0.2107,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0227,
                "shots_on_target": 0.2493,
                "big_chances_created": 0.0159,
                "xgot": 0.0831,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464,
                "opponent_faced": "Nilson Angulo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2485,
                "fifa_rank": 1405.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": {
                "interceptions": 0.858,
                "tackles": 1.06,
                "tackles_won": 0.6757,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5957,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2523,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6542,
                "fouls_drawn": 0.5671,
                "blocks": 0.7512,
                "goal_rate": 0.2107,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0227,
                "shots_on_target": 0.2493,
                "big_chances_created": 0.0159,
                "xgot": 0.0831,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464,
                "opponent_faced": "Nilson Angulo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0528,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0528,
                "scorer_weight": 0.0678,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0402,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.858,
                "tackles": 1.06,
                "tackles_won": 0.6757,
                "clearances": 4.8838,
                "aerial_won": 2.7683,
                "total_shots": 0.5957,
                "rating": 7.2877,
                "minutes": 90.0,
                "total_pass": 86.522,
                "accurate_pass": 80.0572,
                "duels_won": 4.6273,
                "total_long_balls": 5.6546,
                "accurate_long_balls": 2.5724,
                "total_own_half_passes": 53.1872,
                "accurate_own_half_passes": 51.1928,
                "total_opp_half_passes": 33.3348,
                "accurate_opp_half_passes": 28.8645,
                "crosses_total": 0.2523,
                "crosses_accurate": 0.0069,
                "touches": 97.7297,
                "possession_lost": 7.3546,
                "dispossessed": 0.103,
                "duels_lost": 3.0014,
                "aerial_lost": 1.7335,
                "total_contest": 0.1441,
                "won_contest": 0.1441,
                "ball_recovery": 3.806,
                "challenges_lost": 0.5276,
                "fouls": 0.6542,
                "fouls_drawn": 0.5671,
                "blocks": 0.7512,
                "goal_rate": 0.2107,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0542,
                "expected_assists": 0.0227,
                "shots_on_target": 0.2493,
                "big_chances_created": 0.0159,
                "xgot": 0.0831,
                "ball_carries": 29.6569,
                "total_progression": 106.8417,
                "progressive_carries": 1.1038,
                "key_pass": 0.1515,
                "shots_off_target": 0.3464,
                "opponent_faced": "Nilson Angulo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0528,
                "projected_assists": 0,
                "assist_probability": 0.0224,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0224,
                "provider_weight": 0.0182,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0153,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Luka Vušković": {
          "player_id": 1405212,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 44,
          "height": 193,
          "market_value": 64000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 3,
            "total_shots": 1,
            "rating": 7.0906,
            "minutes": 88,
            "total_pass": 70,
            "accurate_pass": 63,
            "duels_won": 6,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 41,
            "accurate_own_half_passes": 39,
            "total_opp_half_passes": 29,
            "accurate_opp_half_passes": 24,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 87,
            "possession_lost": 8.7849,
            "dispossessed": 0.4159,
            "duels_lost": 5,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.1963,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.1,
            "expected_assists": 0.0149,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0468,
            "ball_carries": 31,
            "total_progression": 61,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 1,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 1.2,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Wilson Isidor",
            "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.0952,
            "projected_assists": 0,
            "assist_probability": 0.0148,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 28,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 8,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 78,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1104,
                "expected_assists": 0.0094,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 62,
                "accurate_pass": 55,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 4,
                "duels_won": 6,
                "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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.187,
                "expected_assists": 0.0094,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 63,
                "accurate_pass": 56,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 6,
                "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0337,
                "expected_assists": 0.0164,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 95,
                "accurate_pass": 88,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1268,
                "expected_assists": 0.0344,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 103,
                "accurate_pass": 98,
                "clearances": 4,
                "aerial_won": 4,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 643,
            "combined_rank_score": 326.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 122.0,
            "sofascore_rating": 7.4,
            "sofascore_appearances": 2.0,
            "fifa_rank": 530.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": 7.0906,
            "source_file": "data/player_rankings.csv",
            "player_name": "Luka Vušković",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nelson Sepúlveda",
                  "ranking": 638
                },
                {
                  "player_name": "Ratinho",
                  "ranking": 639
                },
                {
                  "player_name": "Trincão",
                  "ranking": 640
                },
                {
                  "player_name": "Bilolkhon Toshmirzaev",
                  "ranking": 641
                },
                {
                  "player_name": "Ibañez",
                  "ranking": 642
                }
              ],
              "lower": [
                {
                  "player_name": "Dae-hwan Kim",
                  "ranking": 644
                },
                {
                  "player_name": "Nelson Guillermo Guaiquil",
                  "ranking": 645
                },
                {
                  "player_name": "Yoo Ji-Ha",
                  "ranking": 646
                },
                {
                  "player_name": "Arlind Ajeti",
                  "ranking": 647
                },
                {
                  "player_name": "Alessandro Bastoni",
                  "ranking": 648
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.582,
          "history_matches": 5,
          "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": 5,
            "data_confidence": 0.582,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0534,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "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": 2.0,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Brighton, 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.9915,
                "tackles": 1.3723,
                "tackles_won": 0.7358,
                "clearances": 5.8324,
                "aerial_won": 2.9043,
                "total_shots": 0.8634,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 66.15,
                "accurate_pass": 59.4315,
                "duels_won": 5.9881,
                "total_long_balls": 5.9659,
                "accurate_long_balls": 3.2046,
                "total_own_half_passes": 39.0039,
                "accurate_own_half_passes": 36.9131,
                "total_opp_half_passes": 27.1462,
                "accurate_opp_half_passes": 22.5185,
                "crosses_total": 0.3896,
                "crosses_accurate": 0.0,
                "touches": 82.6781,
                "possession_lost": 8.3396,
                "dispossessed": 0.3948,
                "duels_lost": 4.5546,
                "aerial_lost": 2.2197,
                "total_contest": 0.1948,
                "won_contest": 0.1948,
                "ball_recovery": 3.5529,
                "challenges_lost": 0.3604,
                "fouls": 1.5797,
                "fouls_drawn": 1.4278,
                "blocks": 0.6301,
                "goals": 0.1948,
                "goal_rate": 0.1948,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0852,
                "expected_assists": 0.0127,
                "shots_on_target": 0.1948,
                "big_chances_created": 0.0,
                "xgot": 0.0399,
                "ball_carries": 29.0596,
                "total_progression": 58.2891,
                "progressive_carries": 0.8419,
                "key_pass": 0.0,
                "shots_off_target": 0.6686
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.9
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.487,
                  "aerialWon": 3.0419,
                  "totalClearance_p90": 6.7338,
                  "totalTackle": 1.3237,
                  "totalPass": 66.15
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9915062785148621,
                    "model_output": 0.9915,
                    "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.1137
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0297
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0296
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0174
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0126
                        }
                      ],
                      "others": -0.0096,
                      "total": 0.9915,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124556
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.030099
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.030054
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.017719
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.012698
                        }
                      ],
                      "others_margin": -0.009548
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.3723273277282715,
                    "model_output": 1.3723,
                    "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.1559
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0443
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0359
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0308
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0275
                        }
                      ],
                      "others": -0.1006,
                      "total": 1.3723,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.10599
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.029018
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.024103
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.020738
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.018509
                        }
                      ],
                      "others_margin": -0.070678
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7357882857322693,
                    "model_output": 0.7358,
                    "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.0898
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0379
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0352
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0238
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.023
                        }
                      ],
                      "others": -0.0885,
                      "total": 0.7358,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.099945
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.040932
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.039569
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.027697
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.027559
                        }
                      ],
                      "others_margin": -0.113588
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.832368850708008,
                    "model_output": 5.8324,
                    "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.8164
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5667
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3766
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2631
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2399
                        }
                      ],
                      "others": 0.1183,
                      "total": 5.8324,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.212326
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124677
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.075017
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.049263
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.042898
                        }
                      ],
                      "others_margin": 0.020459
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.9043405055999756,
                    "model_output": 2.9043,
                    "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.5889
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2509
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2183
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.2051
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1157
                        }
                      ],
                      "others": 0.1434,
                      "total": 2.9043,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.354943
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119812
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.093737
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.080693
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.042824
                        }
                      ],
                      "others_margin": 0.050644
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.863431990146637,
                    "model_output": 0.8634,
                    "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.2963
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0567
                        },
                        {
                          "name": "rating",
                          "contribution": 0.04
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0263
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0237
                        }
                      ],
                      "others": 0.0019,
                      "total": 0.8634,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.296279
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.056667
                        },
                        {
                          "name": "rating",
                          "margin": 0.040028
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.026316
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.023667
                        }
                      ],
                      "others_margin": 0.001975
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.090603351593018,
                    "model_output": 7.0906,
                    "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": "totalPass",
                          "contribution": 0.0796
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0503
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0454
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0409
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0322
                        }
                      ],
                      "others": 0.0571,
                      "total": 7.0906,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.07956
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.050327
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.045368
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.040901
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.032175
                        }
                      ],
                      "others_margin": 0.057141
                    }
                  }
                ],
                "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.0534, quality 0.861)",
              "stats": {
                "interceptions": 1.0445,
                "tackles": 1.4456,
                "tackles_won": 0.7751,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9095,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.4104,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6641,
                "fouls_drawn": 1.504,
                "blocks": 0.6637,
                "goals": 0.2052,
                "goal_rate": 0.2052,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0134,
                "shots_on_target": 0.2052,
                "big_chances_created": 0.0,
                "xgot": 0.042,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043
              },
              "params": {
                "market_value_eur": 64000000,
                "quality_factor": 0.8608,
                "boost_factor": 1.0534,
                "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": {
                "interceptions": 0.9992,
                "tackles": 1.4456,
                "tackles_won": 0.7627,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9549,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.3926,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6344,
                "fouls_drawn": 1.4388,
                "blocks": 0.6637,
                "goals": 0.1963,
                "goal_rate": 0.1963,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0134,
                "shots_on_target": 0.1963,
                "big_chances_created": 0.0,
                "xgot": 0.042,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043
              },
              "params": {
                "blend_weight": 0.0433,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9782,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.504,
                  "after": 1.4388
                },
                {
                  "stat": "totalShots",
                  "before": 0.9095,
                  "after": 0.9549
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.0445,
                  "after": 0.9992
                },
                {
                  "stat": "fouls",
                  "before": 1.6641,
                  "after": 1.6344
                },
                {
                  "stat": "totalCross",
                  "before": 0.4104,
                  "after": 0.3926
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7751,
                  "after": 0.7627
                },
                {
                  "stat": "goals",
                  "before": 0.2052,
                  "after": 0.1963
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2052,
                  "after": 0.1963
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.4456,
                "tackles_won": 0.7627,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9549,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.3926,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6344,
                "fouls_drawn": 1.4388,
                "blocks": 0.6637,
                "goals": 0.1963,
                "goal_rate": 0.1963,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0134,
                "shots_on_target": 0.1963,
                "big_chances_created": 0.0,
                "xgot": 0.042,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043
              },
              "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.9992,
                "tackles": 1.4456,
                "tackles_won": 0.7627,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9549,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.3926,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6344,
                "fouls_drawn": 1.4388,
                "blocks": 0.6637,
                "goals": 0.1963,
                "goal_rate": 0.1963,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0897,
                "expected_assists": 0.0134,
                "shots_on_target": 0.1963,
                "big_chances_created": 0.0,
                "xgot": 0.042,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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": "Wilson Isidor",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.4456,
                "tackles_won": 0.7627,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9549,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.3926,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6344,
                "fouls_drawn": 1.4388,
                "blocks": 0.6637,
                "goal_rate": 0.1963,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1,
                "expected_assists": 0.0149,
                "shots_on_target": 0.1963,
                "big_chances_created": 0.0,
                "xgot": 0.0468,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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": 1.25,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0897,
                  "after": 0.1
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 4 by projected rating, fifa_overall 81.0; not used by the projection)",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.4456,
                "tackles_won": 0.7627,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9549,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.3926,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6344,
                "fouls_drawn": 1.4388,
                "blocks": 0.6637,
                "goal_rate": 0.1963,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1,
                "expected_assists": 0.0149,
                "shots_on_target": 0.1963,
                "big_chances_created": 0.0,
                "xgot": 0.0468,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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": 1.25,
                "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": 643,
                "fifa_rank": 530.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.9992,
                "tackles": 1.4456,
                "tackles_won": 0.7627,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9549,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.3926,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6344,
                "fouls_drawn": 1.4388,
                "blocks": 0.6637,
                "goal_rate": 0.1963,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1,
                "expected_assists": 0.0149,
                "shots_on_target": 0.1963,
                "big_chances_created": 0.0,
                "xgot": 0.0468,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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.0952,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0952,
                "scorer_weight": 0.125,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0742,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.9992,
                "tackles": 1.4456,
                "tackles_won": 0.7627,
                "clearances": 6.1438,
                "aerial_won": 3.0594,
                "total_shots": 0.9549,
                "rating": 7.0906,
                "minutes": 88.04,
                "total_pass": 69.6824,
                "accurate_pass": 62.6051,
                "duels_won": 6.3079,
                "total_long_balls": 6.2845,
                "accurate_long_balls": 3.3757,
                "total_own_half_passes": 41.0867,
                "accurate_own_half_passes": 38.8843,
                "total_opp_half_passes": 28.5958,
                "accurate_opp_half_passes": 23.721,
                "crosses_total": 0.3926,
                "crosses_accurate": 0.0,
                "touches": 87.0931,
                "possession_lost": 8.7849,
                "dispossessed": 0.4159,
                "duels_lost": 4.7978,
                "aerial_lost": 2.3382,
                "total_contest": 0.2052,
                "won_contest": 0.2052,
                "ball_recovery": 3.7426,
                "challenges_lost": 0.3796,
                "fouls": 1.6344,
                "fouls_drawn": 1.4388,
                "blocks": 0.6637,
                "goal_rate": 0.1963,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1,
                "expected_assists": 0.0149,
                "shots_on_target": 0.1963,
                "big_chances_created": 0.0,
                "xgot": 0.0468,
                "ball_carries": 30.6114,
                "total_progression": 61.4017,
                "progressive_carries": 0.8869,
                "key_pass": 0.0,
                "shots_off_target": 0.7043,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.4,
                "clearances_in_zone": 1.2,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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.0952,
                "projected_assists": 0,
                "assist_probability": 0.0148,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0148,
                "provider_weight": 0.0119,
                "squad_weight_total": 1.1906,
                "weight_share": 0.01,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Ferdi Kadıoğlu": {
          "player_id": 825844,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 24,
          "height": 174,
          "market_value": 36000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7721,
            "minutes": 87,
            "total_pass": 39,
            "accurate_pass": 33,
            "duels_won": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 20,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 55,
            "possession_lost": 9.3745,
            "dispossessed": 0.2018,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0419,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0505,
            "expected_assists": 0.091,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1002,
            "ball_carries": 13,
            "total_progression": 46,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Wilson Isidor",
            "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.0492,
            "projected_assists": 0,
            "assist_probability": 0.087,
            "finishing_factor": 0.9643,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 76,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0449,
                "expected_assists": 0.0191,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 21,
                "key_pass": 1,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0861,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 30,
                "key_pass": 1,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 78,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0573,
                "expected_assists": 0.0109,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0226,
                "expected_assists": 0.0126,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 61,
                "accurate_pass": 57,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0518,
                "expected_assists": 0.0199,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 46,
                "accurate_pass": 40,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0109,
                "expected_assists": 0.6592,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 26,
                "key_pass": 3,
                "clearances": 3,
                "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": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0352,
                "total_shots": 0,
                "total_pass": 55,
                "accurate_pass": 45,
                "tackles": 1,
                "interceptions": 1,
                "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": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 5.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0618,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 45,
                "key_pass": 2,
                "clearances": 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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 9.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2606,
                "expected_assists": 0.0909,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 41,
                "accurate_pass": 37,
                "tackles": 1,
                "interceptions": 3,
                "clearances": 3,
                "aerial_won": 2,
                "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": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1361,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 24,
                "clearances": 5,
                "aerial_won": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 1236,
            "combined_rank_score": 539.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 404.0,
            "sofascore_rating": 6.9375,
            "sofascore_appearances": 8.0,
            "fifa_rank": 675.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7721,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ferdi Kadıoğlu",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mario Pašalić",
                  "ranking": 1231
                },
                {
                  "player_name": "Shohruh Gadoev",
                  "ranking": 1232
                },
                {
                  "player_name": "Matthieu Udol",
                  "ranking": 1233
                },
                {
                  "player_name": "Harry Sawyer",
                  "ranking": 1234
                },
                {
                  "player_name": "Dominik Greif",
                  "ranking": 1235
                }
              ],
              "lower": [
                {
                  "player_name": "Maghnes Akliouche",
                  "ranking": 1237
                },
                {
                  "player_name": "Rasmus Kristensen",
                  "ranking": 1238
                },
                {
                  "player_name": "Robin Risser",
                  "ranking": 1239
                },
                {
                  "player_name": "Sung-hoon Cho",
                  "ranking": 1240
                },
                {
                  "player_name": "Oybek Rustamov",
                  "ranking": 1241
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 41,
          "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": 41,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0083,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 41 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.7583,
                "tackles": 1.1922,
                "tackles_won": 0.7847,
                "clearances": 2.4346,
                "aerial_won": 0.7656,
                "total_shots": 0.7753,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.4312,
                "accurate_pass": 33.2166,
                "duels_won": 2.277,
                "total_long_balls": 2.5204,
                "accurate_long_balls": 1.4084,
                "total_own_half_passes": 15.3128,
                "accurate_own_half_passes": 13.5957,
                "total_opp_half_passes": 23.1184,
                "accurate_opp_half_passes": 19.6209,
                "crosses_total": 1.6394,
                "crosses_accurate": 0.1977,
                "touches": 54.899,
                "possession_lost": 9.2973,
                "dispossessed": 0.2001,
                "duels_lost": 2.7996,
                "aerial_lost": 1.2122,
                "total_contest": 0.4697,
                "won_contest": 0.2266,
                "ball_recovery": 2.5636,
                "challenges_lost": 0.4998,
                "fouls": 0.6546,
                "fouls_drawn": 0.8506,
                "blocks": 0.1671,
                "goals": 0.0416,
                "goal_rate": 0.0416,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0449,
                "expected_assists": 0.0809,
                "shots_on_target": 0.3583,
                "big_chances_created": 0.1376,
                "xgot": 0.0892,
                "ball_carries": 13.1026,
                "total_progression": 45.5794,
                "progressive_carries": 1.3162,
                "key_pass": 0.8735,
                "shots_off_target": 0.417
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 5.5
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 9.0
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 5.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.1437,
                  "aerialWon": 0.5637,
                  "totalClearance_p90": 2.2533,
                  "totalTackle": 0.6374,
                  "totalPass": 38.4125
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7583224773406982,
                    "model_output": 0.7583,
                    "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.1119
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0921
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0248
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0221
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0177
                        }
                      ],
                      "others": -0.0542,
                      "total": 0.7583,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122637
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.099912
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.028723
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.026234
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.021529
                        }
                      ],
                      "others_margin": -0.068885
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.1922218799591064,
                    "model_output": 1.1922,
                    "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": "totalTackle_p90",
                          "contribution": -0.1955
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1541
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.1173
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0651
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0279
                        }
                      ],
                      "others": 0.05,
                      "total": 1.1922,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.151113
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.120972
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.090756
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.054182
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.024112
                        }
                      ],
                      "others_margin": 0.042921
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7847217321395874,
                    "model_output": 0.7847,
                    "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": "totalTackle_p90",
                          "contribution": -0.1043
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0803
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0753
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0491
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0179
                        }
                      ],
                      "others": 0.0608,
                      "total": 0.7847,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.130238
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.101746
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.095
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.067213
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.024985
                        }
                      ],
                      "others_margin": 0.080708
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.4345693588256836,
                    "model_output": 2.4346,
                    "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.5926
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3902
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.3415
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2734
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0856
                        }
                      ],
                      "others": -0.1139,
                      "total": 2.4346,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.188388
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127952
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.111046
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.098734
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.033033
                        }
                      ],
                      "others_margin": -0.045764
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7656384706497192,
                    "model_output": 0.7656,
                    "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.4561
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1098
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1061
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0829
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0338
                        }
                      ],
                      "others": -0.0399,
                      "total": 0.7656,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.400532
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.126183
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122264
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.094143
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.041046
                        }
                      ],
                      "others_margin": -0.050958
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7752824425697327,
                    "model_output": 0.7753,
                    "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.2215
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0656
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0278
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.017
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0147
                        }
                      ],
                      "others": 0.0472,
                      "total": 0.7753,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.221512
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.065623
                        },
                        {
                          "name": "rating",
                          "margin": -0.027824
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.016972
                        },
                        {
                          "name": "history_matches",
                          "margin": 0.014662
                        }
                      ],
                      "others_margin": 0.04715
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.772095203399658,
                    "model_output": 6.7721,
                    "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.0291
                        },
                        {
                          "name": "rating",
                          "contribution": -0.023
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0182
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.011
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0105
                        }
                      ],
                      "others": -0.0224,
                      "total": 6.7721,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.029144
                        },
                        {
                          "name": "rating",
                          "margin": -0.023025
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.018172
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.010955
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.010543
                        }
                      ],
                      "others_margin": -0.022481
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 41,
                  "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.0083, quality 0.758)",
              "stats": {
                "interceptions": 0.7646,
                "tackles": 1.2021,
                "tackles_won": 0.7912,
                "clearances": 2.4548,
                "aerial_won": 0.772,
                "total_shots": 0.7818,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.7502,
                "accurate_pass": 33.4923,
                "duels_won": 2.2959,
                "total_long_balls": 2.5413,
                "accurate_long_balls": 1.4201,
                "total_own_half_passes": 15.4399,
                "accurate_own_half_passes": 13.7085,
                "total_opp_half_passes": 23.3103,
                "accurate_opp_half_passes": 19.7838,
                "crosses_total": 1.653,
                "crosses_accurate": 0.1993,
                "touches": 55.3547,
                "possession_lost": 9.3745,
                "dispossessed": 0.2018,
                "duels_lost": 2.8228,
                "aerial_lost": 1.2223,
                "total_contest": 0.4736,
                "won_contest": 0.2285,
                "ball_recovery": 2.5849,
                "challenges_lost": 0.5039,
                "fouls": 0.66,
                "fouls_drawn": 0.8577,
                "blocks": 0.1685,
                "goals": 0.0419,
                "goal_rate": 0.0419,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0453,
                "expected_assists": 0.0816,
                "shots_on_target": 0.3613,
                "big_chances_created": 0.1387,
                "xgot": 0.0899,
                "ball_carries": 13.2114,
                "total_progression": 45.9577,
                "progressive_carries": 1.3271,
                "key_pass": 0.8808,
                "shots_off_target": 0.4205
              },
              "params": {
                "market_value_eur": 36000000,
                "quality_factor": 0.7581,
                "boost_factor": 1.0083,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.7646,
                "tackles": 1.2021,
                "tackles_won": 0.7912,
                "clearances": 2.4548,
                "aerial_won": 0.772,
                "total_shots": 0.7818,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.7502,
                "accurate_pass": 33.4923,
                "duels_won": 2.2959,
                "total_long_balls": 2.5413,
                "accurate_long_balls": 1.4201,
                "total_own_half_passes": 15.4399,
                "accurate_own_half_passes": 13.7085,
                "total_opp_half_passes": 23.3103,
                "accurate_opp_half_passes": 19.7838,
                "crosses_total": 1.653,
                "crosses_accurate": 0.1993,
                "touches": 55.3547,
                "possession_lost": 9.3745,
                "dispossessed": 0.2018,
                "duels_lost": 2.8228,
                "aerial_lost": 1.2223,
                "total_contest": 0.4736,
                "won_contest": 0.2285,
                "ball_recovery": 2.5849,
                "challenges_lost": 0.5039,
                "fouls": 0.66,
                "fouls_drawn": 0.8577,
                "blocks": 0.1685,
                "goals": 0.0419,
                "goal_rate": 0.0419,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0453,
                "expected_assists": 0.0816,
                "shots_on_target": 0.3613,
                "big_chances_created": 0.1387,
                "xgot": 0.0899,
                "ball_carries": 13.2114,
                "total_progression": 45.9577,
                "progressive_carries": 1.3271,
                "key_pass": 0.8808,
                "shots_off_target": 0.4205
              },
              "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.7646,
                "tackles": 1.2021,
                "tackles_won": 0.7912,
                "clearances": 2.4548,
                "aerial_won": 0.772,
                "total_shots": 0.7818,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.7502,
                "accurate_pass": 33.4923,
                "duels_won": 2.2959,
                "total_long_balls": 2.5413,
                "accurate_long_balls": 1.4201,
                "total_own_half_passes": 15.4399,
                "accurate_own_half_passes": 13.7085,
                "total_opp_half_passes": 23.3103,
                "accurate_opp_half_passes": 19.7838,
                "crosses_total": 1.653,
                "crosses_accurate": 0.1993,
                "touches": 55.3547,
                "possession_lost": 9.3745,
                "dispossessed": 0.2018,
                "duels_lost": 2.8228,
                "aerial_lost": 1.2223,
                "total_contest": 0.4736,
                "won_contest": 0.2285,
                "ball_recovery": 2.5849,
                "challenges_lost": 0.5039,
                "fouls": 0.66,
                "fouls_drawn": 0.8577,
                "blocks": 0.1685,
                "goals": 0.0419,
                "goal_rate": 0.0419,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0453,
                "expected_assists": 0.0816,
                "shots_on_target": 0.3613,
                "big_chances_created": 0.1387,
                "xgot": 0.0899,
                "ball_carries": 13.2114,
                "total_progression": 45.9577,
                "progressive_carries": 1.3271,
                "key_pass": 0.8808,
                "shots_off_target": 0.4205,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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": "Wilson Isidor",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "interceptions": 0.7646,
                "tackles": 1.2021,
                "tackles_won": 0.7912,
                "clearances": 2.4548,
                "aerial_won": 0.772,
                "total_shots": 0.7818,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.7502,
                "accurate_pass": 33.4923,
                "duels_won": 2.2959,
                "total_long_balls": 2.5413,
                "accurate_long_balls": 1.4201,
                "total_own_half_passes": 15.4399,
                "accurate_own_half_passes": 13.7085,
                "total_opp_half_passes": 23.3103,
                "accurate_opp_half_passes": 19.7838,
                "crosses_total": 1.653,
                "crosses_accurate": 0.1993,
                "touches": 55.3547,
                "possession_lost": 9.3745,
                "dispossessed": 0.2018,
                "duels_lost": 2.8228,
                "aerial_lost": 1.2223,
                "total_contest": 0.4736,
                "won_contest": 0.2285,
                "ball_recovery": 2.5849,
                "challenges_lost": 0.5039,
                "fouls": 0.66,
                "fouls_drawn": 0.8577,
                "blocks": 0.1685,
                "goal_rate": 0.0419,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0505,
                "expected_assists": 0.091,
                "shots_on_target": 0.3613,
                "big_chances_created": 0.1387,
                "xgot": 0.1002,
                "ball_carries": 13.2114,
                "total_progression": 45.9577,
                "progressive_carries": 1.3271,
                "key_pass": 0.8808,
                "shots_off_target": 0.4205,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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.9643,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0453,
                  "after": 0.0505
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0816,
                  "after": 0.091
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 15 by projected rating, fifa_overall 80.0; not used by the projection)",
              "stats": {
                "interceptions": 0.7646,
                "tackles": 1.2021,
                "tackles_won": 0.7912,
                "clearances": 2.4548,
                "aerial_won": 0.772,
                "total_shots": 0.7818,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.7502,
                "accurate_pass": 33.4923,
                "duels_won": 2.2959,
                "total_long_balls": 2.5413,
                "accurate_long_balls": 1.4201,
                "total_own_half_passes": 15.4399,
                "accurate_own_half_passes": 13.7085,
                "total_opp_half_passes": 23.3103,
                "accurate_opp_half_passes": 19.7838,
                "crosses_total": 1.653,
                "crosses_accurate": 0.1993,
                "touches": 55.3547,
                "possession_lost": 9.3745,
                "dispossessed": 0.2018,
                "duels_lost": 2.8228,
                "aerial_lost": 1.2223,
                "total_contest": 0.4736,
                "won_contest": 0.2285,
                "ball_recovery": 2.5849,
                "challenges_lost": 0.5039,
                "fouls": 0.66,
                "fouls_drawn": 0.8577,
                "blocks": 0.1685,
                "goal_rate": 0.0419,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0505,
                "expected_assists": 0.091,
                "shots_on_target": 0.3613,
                "big_chances_created": 0.1387,
                "xgot": 0.1002,
                "ball_carries": 13.2114,
                "total_progression": 45.9577,
                "progressive_carries": 1.3271,
                "key_pass": 0.8808,
                "shots_off_target": 0.4205,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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.9643,
                "creation_factor": 0.8,
                "fifa_overall": 80.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": 1236,
                "fifa_rank": 675.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": {
                "interceptions": 0.7646,
                "tackles": 1.2021,
                "tackles_won": 0.7912,
                "clearances": 2.4548,
                "aerial_won": 0.772,
                "total_shots": 0.7818,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.7502,
                "accurate_pass": 33.4923,
                "duels_won": 2.2959,
                "total_long_balls": 2.5413,
                "accurate_long_balls": 1.4201,
                "total_own_half_passes": 15.4399,
                "accurate_own_half_passes": 13.7085,
                "total_opp_half_passes": 23.3103,
                "accurate_opp_half_passes": 19.7838,
                "crosses_total": 1.653,
                "crosses_accurate": 0.1993,
                "touches": 55.3547,
                "possession_lost": 9.3745,
                "dispossessed": 0.2018,
                "duels_lost": 2.8228,
                "aerial_lost": 1.2223,
                "total_contest": 0.4736,
                "won_contest": 0.2285,
                "ball_recovery": 2.5849,
                "challenges_lost": 0.5039,
                "fouls": 0.66,
                "fouls_drawn": 0.8577,
                "blocks": 0.1685,
                "goal_rate": 0.0419,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0505,
                "expected_assists": 0.091,
                "shots_on_target": 0.3613,
                "big_chances_created": 0.1387,
                "xgot": 0.1002,
                "ball_carries": 13.2114,
                "total_progression": 45.9577,
                "progressive_carries": 1.3271,
                "key_pass": 0.8808,
                "shots_off_target": 0.4205,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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.0492,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9643,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0492,
                "scorer_weight": 0.0487,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0289,
                "finishing_factor": 0.9643,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.7646,
                "tackles": 1.2021,
                "tackles_won": 0.7912,
                "clearances": 2.4548,
                "aerial_won": 0.772,
                "total_shots": 0.7818,
                "rating": 6.7721,
                "minutes": 86.71,
                "total_pass": 38.7502,
                "accurate_pass": 33.4923,
                "duels_won": 2.2959,
                "total_long_balls": 2.5413,
                "accurate_long_balls": 1.4201,
                "total_own_half_passes": 15.4399,
                "accurate_own_half_passes": 13.7085,
                "total_opp_half_passes": 23.3103,
                "accurate_opp_half_passes": 19.7838,
                "crosses_total": 1.653,
                "crosses_accurate": 0.1993,
                "touches": 55.3547,
                "possession_lost": 9.3745,
                "dispossessed": 0.2018,
                "duels_lost": 2.8228,
                "aerial_lost": 1.2223,
                "total_contest": 0.4736,
                "won_contest": 0.2285,
                "ball_recovery": 2.5849,
                "challenges_lost": 0.5039,
                "fouls": 0.66,
                "fouls_drawn": 0.8577,
                "blocks": 0.1685,
                "goal_rate": 0.0419,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0505,
                "expected_assists": 0.091,
                "shots_on_target": 0.3613,
                "big_chances_created": 0.1387,
                "xgot": 0.1002,
                "ball_carries": 13.2114,
                "total_progression": 45.9577,
                "progressive_carries": 1.3271,
                "key_pass": 0.8808,
                "shots_off_target": 0.4205,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.2,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Wilson Isidor",
                "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.0492,
                "projected_assists": 0,
                "assist_probability": 0.087,
                "finishing_factor": 0.9643,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.087,
                "provider_weight": 0.0728,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0611,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Bart Verbruggen": {
          "player_id": 994363,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 193,
          "market_value": 37000000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0142,
            "rating": 7.0191,
            "minutes": 90,
            "total_pass": 40,
            "accurate_pass": 30,
            "total_long_balls": 16,
            "accurate_long_balls": 6,
            "touches": 47,
            "clearances": 1,
            "ball_recovery": 7,
            "high_claims": 1,
            "punches": 0.9941,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 10.5288,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 27,
            "accurate_own_half_passes": 26,
            "gk_engine_opponent_lambda": 1.3563,
            "shots_faced": 12.9,
            "expected_saves": 3.16,
            "high_pressure_saves": 1.08,
            "opponent_faced": "Wilson Isidor, Enzo Le Fée",
            "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": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 22,
                "ball_recovery": 4,
                "saves": 2,
                "goals_prevented": 1.0844
              },
              "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 9.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 24,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 7,
                "saves": 6,
                "goals_prevented": 1.9278
              },
              "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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2044,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 33,
                "duels_won": 1,
                "ball_recovery": 5,
                "saves": 3,
                "goals_prevented": 0.9018
              },
              "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": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 5.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 40,
                "ball_recovery": 14,
                "saves": 1,
                "goals_prevented": -1.3996
              },
              "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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 34,
                "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": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "clearances": 1,
                "ball_recovery": 10,
                "saves": 5,
                "goals_prevented": -0.8221
              },
              "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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 20,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 10,
                "saves": 1,
                "goals_prevented": -0.1713
              },
              "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": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 28,
                "ball_recovery": 7,
                "saves": 1,
                "goals_prevented": 0.0899
              },
              "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": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 21,
                "clearances": 1,
                "ball_recovery": 5,
                "saves": 4,
                "goals_prevented": 1.2116
              },
              "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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 69,
                "accurate_pass": 54,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 868,
            "combined_rank_score": 410.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 300.0,
            "sofascore_rating": 7.0421,
            "sofascore_appearances": 38.0,
            "fifa_rank": 521.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0191,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bart Verbruggen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jun-seok Son",
                  "ranking": 863
                },
                {
                  "player_name": "Mukhsinjon Ubaydullaev",
                  "ranking": 864
                },
                {
                  "player_name": "Nurmukhammad Abduganiev",
                  "ranking": 865
                },
                {
                  "player_name": "Michail Antonio",
                  "ranking": 866
                },
                {
                  "player_name": "Guglielmo Vicario",
                  "ranking": 867
                }
              ],
              "lower": [
                {
                  "player_name": "Jang Min-Jun",
                  "ranking": 869
                },
                {
                  "player_name": "Josip Stanišić",
                  "ranking": 870
                },
                {
                  "player_name": "Sardor Sobirkhuzhaev",
                  "ranking": 871
                },
                {
                  "player_name": "Sung-joon Kim",
                  "ranking": 872
                },
                {
                  "player_name": "Derlan",
                  "ranking": 873
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 43,
          "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": 43,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0081,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "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 43 historical appearances across 3 target models; FBref 2026-2027 prior blended (Premier League, Brighton, 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": 2.8801,
                "goals_prevented": -0.0141,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 39.8766,
                "accurate_pass": 29.7397,
                "total_long_balls": 15.756,
                "accurate_long_balls": 5.9328,
                "touches": 47.0827,
                "clearances": 0.7731,
                "ball_recovery": 7.3243,
                "high_claims": 0.6967,
                "punches": 0.9861,
                "aerial_won": 0.4051,
                "sweeper_actions": 0.8333,
                "sweeper_accurate": 0.7664,
                "saves_inside_box": 2.2461,
                "possession_lost": 10.4442,
                "duels_won": 0.5382,
                "duels_lost": 0.1131,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1307,
                "total_own_half_passes": 27.1322,
                "accurate_own_half_passes": 25.9502
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-10T10:04:18.353158+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 199,
                    "rows": 6796
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 9.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 5.2
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 0.542,
                  "distribution_accuracy": 0.9497,
                  "sweeper_accuracy": 0.3752,
                  "goalkeeperValueNormalized": 0.3468,
                  "save_contribution": 3.0897,
                  "accurateKeeperSweeper": 0.7664
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.8801164627075195,
                    "model_output": 2.8801,
                    "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": "distribution_accuracy",
                          "contribution": -0.0449
                        },
                        {
                          "name": "goalsPrevented",
                          "contribution": 0.0393
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0206
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0194
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0165
                        }
                      ],
                      "others": -0.0194,
                      "total": 2.8801,
                      "log_link": true,
                      "margin_base": 1.074537,
                      "item_margins": [
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.015463
                        },
                        {
                          "name": "goalsPrevented",
                          "margin": 0.013527
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.007088
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.006699
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.005699
                        }
                      ],
                      "others_margin": -0.006683
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.014092537574470043,
                    "model_output": -0.0141,
                    "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": "aerialWon",
                          "contribution": -0.0202
                        },
                        {
                          "name": "commanding_index",
                          "contribution": 0.0187
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0148
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.013
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0105
                        }
                      ],
                      "others": 0.0163,
                      "total": -0.0141,
                      "log_link": false,
                      "margin_base": -0.016613,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.020166
                        },
                        {
                          "name": "commanding_index",
                          "margin": 0.018672
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.014838
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.012992
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.010505
                        }
                      ],
                      "others_margin": 0.016364
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.019108295440674,
                    "model_output": 7.0191,
                    "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": "totalPass",
                          "contribution": 0.0155
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0148
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0132
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0102
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0087
                        }
                      ],
                      "others": -0.0024,
                      "total": 7.0191,
                      "log_link": false,
                      "margin_base": 7.009122,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.015474
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.014779
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.013187
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.010243
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.008721
                        }
                      ],
                      "others_margin": -0.002373
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 43,
                  "role_matches": 43,
                  "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.764)",
              "stats": {
                "saves": 2.9034,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0076,
                "fouls_drawn": 0.1318,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604
              },
              "params": {
                "market_value_eur": 37000000,
                "quality_factor": 0.7641,
                "boost_factor": 1.0081,
                "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": {
                "saves": 2.8817,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1306,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604
              },
              "params": {
                "blend_weight": 0.009,
                "history_matches": 43,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.9034,
                  "after": 2.8817
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.8817,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1306,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604
              },
              "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.8817,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1306,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604,
                "gk_engine_opponent_lambda": 1.3563,
                "shots_faced": 12.9,
                "expected_saves": 3.16,
                "high_pressure_saves": 1.09,
                "opponent_faced": "Wilson Isidor, Enzo Le Fée",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Wilson Isidor, Enzo Le Fée",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.3563
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "saves": 2.8817,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1306,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604,
                "gk_engine_opponent_lambda": 1.3563,
                "shots_faced": 12.9,
                "expected_saves": 3.16,
                "high_pressure_saves": 1.08,
                "opponent_faced": "Wilson Isidor, Enzo Le Fée",
                "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.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "high_pressure_saves",
                  "before": 1.09,
                  "after": 1.08
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 6 by projected rating, fifa_overall 81.0; not used by the projection)",
              "stats": {
                "saves": 2.8817,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1306,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604,
                "gk_engine_opponent_lambda": 1.3563,
                "shots_faced": 12.9,
                "expected_saves": 3.16,
                "high_pressure_saves": 1.08,
                "opponent_faced": "Wilson Isidor, Enzo Le Fée",
                "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": 81.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": 868,
                "fifa_rank": 521.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": {
                "saves": 2.8817,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1306,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604,
                "gk_engine_opponent_lambda": 1.3563,
                "shots_faced": 12.9,
                "expected_saves": 3.16,
                "high_pressure_saves": 1.08,
                "opponent_faced": "Wilson Isidor, Enzo Le Fée",
                "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": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.8817,
                "goals_prevented": -0.0142,
                "rating": 7.0191,
                "minutes": 90.0,
                "total_pass": 40.1996,
                "accurate_pass": 29.9806,
                "total_long_balls": 15.8836,
                "accurate_long_balls": 5.9809,
                "touches": 47.4641,
                "clearances": 0.7794,
                "ball_recovery": 7.3836,
                "high_claims": 0.7023,
                "punches": 0.9941,
                "aerial_won": 0.4084,
                "sweeper_actions": 0.84,
                "sweeper_accurate": 0.7726,
                "saves_inside_box": 2.2643,
                "possession_lost": 10.5288,
                "duels_won": 0.5426,
                "duels_lost": 0.114,
                "total_contest": 0.0003,
                "won_contest": 0.0003,
                "fouls": 0.0075,
                "fouls_drawn": 0.1306,
                "total_own_half_passes": 27.352,
                "accurate_own_half_passes": 26.1604,
                "gk_engine_opponent_lambda": 1.3563,
                "shots_faced": 12.9,
                "expected_saves": 3.16,
                "high_pressure_saves": 1.08,
                "opponent_faced": "Wilson Isidor, Enzo Le Fée",
                "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": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Tom McGill": {
          "player_id": 1007073,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 38,
          "height": 185,
          "market_value": 515000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.022,
            "rating": 6.8,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0146,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1171,
            "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.109,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "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": 62.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 8951,
            "combined_rank_score": 7607.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 14954.0,
            "fifa_overall": 62.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tom McGill",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mateo Mendia",
                  "ranking": 8946
                },
                {
                  "player_name": "Bill Tuiloma",
                  "ranking": 8947
                },
                {
                  "player_name": "Jordan Courtney-Perkins",
                  "ranking": 8948
                },
                {
                  "player_name": "James Carragher",
                  "ranking": 8949
                },
                {
                  "player_name": "Noah Markmann",
                  "ranking": 8950
                }
              ],
              "lower": [
                {
                  "player_name": "Justin Janssen",
                  "ranking": 8952
                },
                {
                  "player_name": "Ismahila Ouédraogo",
                  "ranking": 8953
                },
                {
                  "player_name": "Ulrik Yttergård Jenssen",
                  "ranking": 8954
                },
                {
                  "player_name": "Mikael Uhre",
                  "ranking": 8955
                },
                {
                  "player_name": "Daniel Anyembe",
                  "ranking": 8956
                }
              ]
            }
          },
          "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": 4.392222187561249,
            "bench_appearance_prob": 0.10873737216187492,
            "market_value_adjustment": 0.4374,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€515,000) scaled to 4.4 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.44)",
              "stats": {
                "saves": 2.9,
                "goals_prevented": 0.45,
                "rating": 6.8,
                "minutes": 90.0,
                "total_pass": 27.0,
                "accurate_pass": 20.0,
                "total_long_balls": 8.0,
                "accurate_long_balls": 4.0,
                "touches": 32.0,
                "clearances": 0.9,
                "ball_recovery": 1.2,
                "high_claims": 0.5,
                "punches": 0.3,
                "aerial_won": 0.6,
                "sweeper_actions": 1.2,
                "sweeper_accurate": 0.7,
                "saves_inside_box": 1.2,
                "possession_lost": 2.4,
                "duels_won": 0.4,
                "duels_lost": 0.2,
                "total_contest": 0.4,
                "won_contest": 0.2,
                "fouls": 0.2,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 21.0,
                "accurate_own_half_passes": 16.0
              },
              "params": {
                "market_value_eur": 515000,
                "quality_factor": 0.4374
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 4.4 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "expected_minutes": 4.39,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0488,
                "appearance_probability": 0.109
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "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.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.109,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 12 by projected rating, fifa_overall 62.0; not used by the projection)",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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": 62.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": 8951,
                "fifa_rank": 14954.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 62.0
              }
            }
          ]
        },
        "Mats Wieffer": {
          "player_id": 959628,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 27,
          "height": 188,
          "market_value": 24000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7763,
            "minutes": 14,
            "total_pass": 9,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 16,
            "possession_lost": 2.8104,
            "dispossessed": 0.3916,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.18,
            "assists": 0,
            "expected_goals": 0.0498,
            "expected_assists": 0.0673,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.236,
            "bench_expected_minutes": 14.49,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "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": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363249,
              "match_date": "2026-08-30",
              "home_team": "Chelsea",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 80,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0297,
                "expected_assists": 0.0833,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 49,
                "accurate_pass": 44,
                "interceptions": 2,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 78,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0859,
                "expected_assists": 0.0503,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 60,
                "accurate_pass": 55,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 4,
                "aerial_won": 3,
                "duels_won": 11,
                "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": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0123,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 27,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 3,
                "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": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 18,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0104,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 19,
                "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": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0421,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 17,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "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"
            },
            {
              "match_id": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 9.5,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2521,
                "expected_assists": 0.001,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 28,
                "accurate_pass": 21,
                "tackles": 6,
                "tackles_won": 4,
                "clearances": 3,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024015,
              "match_date": "2026-03-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1695,
                "expected_assists": 0.0124,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 36,
                "accurate_pass": 24,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "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": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1166,
                "expected_assists": 0.2563,
                "total_shots": 1,
                "total_pass": 60,
                "accurate_pass": 49,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 9
              },
              "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": 14023933,
              "match_date": "2026-03-04",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 77,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0833,
                "expected_assists": 0.0147,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 31,
                "accurate_pass": 28,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 5,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1165,
            "combined_rank_score": 515.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 2.0,
            "fifa_rank": 874.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7763,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mats Wieffer",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Chris Richards",
                  "ranking": 1160
                },
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Noah Sadiki",
                  "ranking": 1166
                },
                {
                  "player_name": "Kingsley Sarfo",
                  "ranking": 1167
                },
                {
                  "player_name": "Pablo Parra",
                  "ranking": 1168
                },
                {
                  "player_name": "Yaya Dukuly",
                  "ranking": 1169
                },
                {
                  "player_name": "Rustam Turdimurodov",
                  "ranking": 1170
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 28,
          "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": 28,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.48735814265611,
            "bench_appearance_prob": 0.236,
            "market_value_adjustment": 1.0074,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "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.1133
            },
            "rationale": "Bench projection scaled from XGBoost D_service (28 historical appearances) to 14.5 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.3927,
                "tackles": 0.7831,
                "tackles_won": 0.5734,
                "clearances": 0.8605,
                "aerial_won": 0.5842,
                "total_shots": 0.1818,
                "rating": 6.7763,
                "minutes": 26.49,
                "total_pass": 16.2342,
                "accurate_pass": 13.2993,
                "duels_won": 3.9932,
                "total_long_balls": 1.1662,
                "accurate_long_balls": 0.3887,
                "total_own_half_passes": 5.7036,
                "accurate_own_half_passes": 5.3149,
                "total_opp_half_passes": 10.5306,
                "accurate_opp_half_passes": 7.9844,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 29.6608,
                "possession_lost": 5.1011,
                "dispossessed": 0.3887,
                "duels_lost": 2.7687,
                "aerial_lost": 0.7191,
                "total_contest": 0.6113,
                "won_contest": 0.3304,
                "ball_recovery": 1.7191,
                "challenges_lost": 0.7191,
                "fouls": 0.6608,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.3304,
                "assist_rate": 0.3304,
                "expected_goals": 0.0903,
                "expected_assists": 0.1222,
                "shots_on_target": 0.0,
                "big_chances_created": 0.3304,
                "xgot": 0.0,
                "ball_carries": 8.0,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.7191,
                "shots_off_target": 0.1818
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Chelsea",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 18.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0673,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0572,
                    "rating": 9.5
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0486,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0413,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-03-04",
                    "opponent": "Arsenal",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.5886,
                  "aerialWon": 1.5798,
                  "totalClearance_p90": 1.8623,
                  "totalTackle": 1.7946,
                  "totalPass": 36.5929
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3927474319934845,
                    "model_output": 0.3927,
                    "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.4932
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0392
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.012
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0115
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.01
                        }
                      ],
                      "others": -0.0001,
                      "total": 0.3927,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.856275
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.102356
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.030114
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.029044
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.02519
                        }
                      ],
                      "others_margin": -0.000411
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.7831432819366455,
                    "model_output": 0.7831,
                    "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.7713
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0254
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0247
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.024
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0171
                        }
                      ],
                      "others": 0.0693,
                      "total": 0.7831,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.806045
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.039938
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.037405
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.035018
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.024315
                        }
                      ],
                      "others_margin": 0.09284
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.573441207408905,
                    "model_output": 0.5734,
                    "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.4403
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0248
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0203
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0195
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0177
                        }
                      ],
                      "others": 0.077,
                      "total": 0.5734,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.724284
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.058179
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.045265
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.041636
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.03623
                        }
                      ],
                      "others_margin": 0.144288
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.860450267791748,
                    "model_output": 0.8605,
                    "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.0682
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2647
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1011
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0619
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0513
                        }
                      ],
                      "others": -0.0437,
                      "total": 0.8605,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.91441
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.212428
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.094752
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.06278
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.055217
                        }
                      ],
                      "others_margin": -0.049496
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5841531753540039,
                    "model_output": 0.5842,
                    "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.7495
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1043
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0611
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0445
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0323
                        }
                      ],
                      "others": -0.0793,
                      "total": 0.5842,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.781545
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.152678
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.086519
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.068074
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.049827
                        }
                      ],
                      "others_margin": -0.127512
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.18175950646400452,
                    "model_output": 0.1818,
                    "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.2749
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0196
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0137
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0068
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0057
                        }
                      ],
                      "others": -0.0214,
                      "total": 0.1818,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.274948
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.019575
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.013684
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.006783
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.005738
                        }
                      ],
                      "others_margin": -0.021359
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.776253700256348,
                    "model_output": 6.7763,
                    "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.0279
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0208
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0204
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0129
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0128
                        }
                      ],
                      "others": -0.0106,
                      "total": 6.7763,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.027942
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.020814
                        },
                        {
                          "name": "touches",
                          "margin": 0.020356
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.012876
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.012848
                        }
                      ],
                      "others_margin": -0.010639
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 28,
                  "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.0074, quality 0.669)",
              "stats": {
                "interceptions": 0.3957,
                "tackles": 0.7889,
                "tackles_won": 0.5777,
                "clearances": 0.8668,
                "aerial_won": 0.5885,
                "total_shots": 0.1831,
                "rating": 6.7763,
                "minutes": 26.49,
                "total_pass": 16.3543,
                "accurate_pass": 13.3977,
                "duels_won": 4.0227,
                "total_long_balls": 1.1748,
                "accurate_long_balls": 0.3916,
                "total_own_half_passes": 5.7458,
                "accurate_own_half_passes": 5.3542,
                "total_opp_half_passes": 10.6085,
                "accurate_opp_half_passes": 8.0435,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 29.8803,
                "possession_lost": 5.1388,
                "dispossessed": 0.3916,
                "duels_lost": 2.7892,
                "aerial_lost": 0.7244,
                "total_contest": 0.6158,
                "won_contest": 0.3328,
                "ball_recovery": 1.7318,
                "challenges_lost": 0.7244,
                "fouls": 0.6657,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.3328,
                "assist_rate": 0.3328,
                "expected_goals": 0.091,
                "expected_assists": 0.1231,
                "shots_on_target": 0.0,
                "big_chances_created": 0.3328,
                "xgot": 0.0,
                "ball_carries": 8.0592,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.7244,
                "shots_off_target": 0.1831
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0074,
                "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.0112)",
              "stats": {
                "interceptions": 0.4009,
                "tackles": 0.7889,
                "tackles_won": 0.5732,
                "clearances": 0.8668,
                "aerial_won": 0.5885,
                "total_shots": 0.1848,
                "rating": 6.7763,
                "minutes": 26.49,
                "total_pass": 16.3543,
                "accurate_pass": 13.3977,
                "duels_won": 4.0227,
                "total_long_balls": 1.1748,
                "accurate_long_balls": 0.3916,
                "total_own_half_passes": 5.7458,
                "accurate_own_half_passes": 5.3542,
                "total_opp_half_passes": 10.6085,
                "accurate_opp_half_passes": 8.0435,
                "crosses_total": 0.0097,
                "crosses_accurate": 0.0,
                "touches": 29.8803,
                "possession_lost": 5.1388,
                "dispossessed": 0.3916,
                "duels_lost": 2.7892,
                "aerial_lost": 0.7244,
                "total_contest": 0.6158,
                "won_contest": 0.3328,
                "ball_recovery": 1.7318,
                "challenges_lost": 0.7244,
                "fouls": 0.6602,
                "fouls_drawn": 0.0058,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.3291,
                "assist_rate": 0.3291,
                "expected_goals": 0.091,
                "expected_assists": 0.1231,
                "shots_on_target": 0.0,
                "big_chances_created": 0.3328,
                "xgot": 0.0,
                "ball_carries": 8.0592,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.7244,
                "shots_off_target": 0.1831
              },
              "params": {
                "blend_weight": 0.0112,
                "history_matches": 28,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2943,
                "prior_reliability": 0.1133,
                "competition": "Premier League",
                "squad": "Brighton"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0097
                },
                {
                  "stat": "wasFouled",
                  "before": 0.0,
                  "after": 0.0058
                },
                {
                  "stat": "fouls",
                  "before": 0.6657,
                  "after": 0.6602
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.3957,
                  "after": 0.4009
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 26.5 to 14.5 expected minutes (appearance prob 0.24)",
              "stats": {
                "interceptions": 0.2193,
                "tackles": 0.4314,
                "tackles_won": 0.3135,
                "clearances": 0.4741,
                "aerial_won": 0.3219,
                "total_shots": 0.1011,
                "rating": 6.7763,
                "minutes": 14.49,
                "total_pass": 8.9442,
                "accurate_pass": 7.3272,
                "duels_won": 2.2,
                "total_long_balls": 0.6425,
                "accurate_long_balls": 0.2142,
                "total_own_half_passes": 3.1424,
                "accurate_own_half_passes": 2.9282,
                "total_opp_half_passes": 5.8018,
                "accurate_opp_half_passes": 4.399,
                "crosses_total": 0.0053,
                "crosses_accurate": 0.0,
                "touches": 16.3415,
                "possession_lost": 2.8104,
                "dispossessed": 0.3916,
                "duels_lost": 1.5254,
                "aerial_lost": 0.7244,
                "total_contest": 0.3368,
                "won_contest": 0.182,
                "ball_recovery": 0.9471,
                "challenges_lost": 0.7244,
                "fouls": 0.3611,
                "fouls_drawn": 0.0032,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.18,
                "assist_rate": 0.18,
                "expected_goals": 0.0498,
                "expected_assists": 0.0673,
                "shots_on_target": 0.0,
                "big_chances_created": 0.182,
                "xgot": 0.0,
                "ball_carries": 4.4076,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.3962,
                "shots_off_target": 0.1001,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49
              },
              "params": {
                "expected_minutes": 14.49,
                "projection_minutes": 26.49,
                "minutes_scale": 0.5469,
                "appearance_probability": 0.236
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2193,
                "tackles": 0.4314,
                "tackles_won": 0.3135,
                "clearances": 0.4741,
                "aerial_won": 0.3219,
                "total_shots": 0.1011,
                "rating": 6.7763,
                "minutes": 14.49,
                "total_pass": 8.9442,
                "accurate_pass": 7.3272,
                "duels_won": 2.2,
                "total_long_balls": 0.6425,
                "accurate_long_balls": 0.2142,
                "total_own_half_passes": 3.1424,
                "accurate_own_half_passes": 2.9282,
                "total_opp_half_passes": 5.8018,
                "accurate_opp_half_passes": 4.399,
                "crosses_total": 0.0053,
                "crosses_accurate": 0.0,
                "touches": 16.3415,
                "possession_lost": 2.8104,
                "dispossessed": 0.3916,
                "duels_lost": 1.5254,
                "aerial_lost": 0.7244,
                "total_contest": 0.3368,
                "won_contest": 0.182,
                "ball_recovery": 0.9471,
                "challenges_lost": 0.7244,
                "fouls": 0.3611,
                "fouls_drawn": 0.0032,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.18,
                "assist_rate": 0.18,
                "expected_goals": 0.0498,
                "expected_assists": 0.0673,
                "shots_on_target": 0.0,
                "big_chances_created": 0.182,
                "xgot": 0.0,
                "ball_carries": 4.4076,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.3962,
                "shots_off_target": 0.1001,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49
              },
              "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.2193,
                "tackles": 0.4314,
                "tackles_won": 0.3135,
                "clearances": 0.4741,
                "aerial_won": 0.3219,
                "total_shots": 0.1011,
                "rating": 6.7763,
                "minutes": 14.49,
                "total_pass": 8.9442,
                "accurate_pass": 7.3272,
                "duels_won": 2.2,
                "total_long_balls": 0.6425,
                "accurate_long_balls": 0.2142,
                "total_own_half_passes": 3.1424,
                "accurate_own_half_passes": 2.9282,
                "total_opp_half_passes": 5.8018,
                "accurate_opp_half_passes": 4.399,
                "crosses_total": 0.0053,
                "crosses_accurate": 0.0,
                "touches": 16.3415,
                "possession_lost": 2.8104,
                "dispossessed": 0.3916,
                "duels_lost": 1.5254,
                "aerial_lost": 0.7244,
                "total_contest": 0.3368,
                "won_contest": 0.182,
                "ball_recovery": 0.9471,
                "challenges_lost": 0.7244,
                "fouls": 0.3611,
                "fouls_drawn": 0.0032,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.18,
                "assists": 0,
                "expected_goals": 0.0498,
                "expected_assists": 0.0673,
                "shots_on_target": 0.0,
                "big_chances_created": 0.182,
                "xgot": 0.0,
                "ball_carries": 4.4076,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.3962,
                "shots_off_target": 0.1001,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.236,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 14 by projected rating, fifa_overall 79.0; not used by the projection)",
              "stats": {
                "interceptions": 0.2193,
                "tackles": 0.4314,
                "tackles_won": 0.3135,
                "clearances": 0.4741,
                "aerial_won": 0.3219,
                "total_shots": 0.1011,
                "rating": 6.7763,
                "minutes": 14.49,
                "total_pass": 8.9442,
                "accurate_pass": 7.3272,
                "duels_won": 2.2,
                "total_long_balls": 0.6425,
                "accurate_long_balls": 0.2142,
                "total_own_half_passes": 3.1424,
                "accurate_own_half_passes": 2.9282,
                "total_opp_half_passes": 5.8018,
                "accurate_opp_half_passes": 4.399,
                "crosses_total": 0.0053,
                "crosses_accurate": 0.0,
                "touches": 16.3415,
                "possession_lost": 2.8104,
                "dispossessed": 0.3916,
                "duels_lost": 1.5254,
                "aerial_lost": 0.7244,
                "total_contest": 0.3368,
                "won_contest": 0.182,
                "ball_recovery": 0.9471,
                "challenges_lost": 0.7244,
                "fouls": 0.3611,
                "fouls_drawn": 0.0032,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.18,
                "assists": 0,
                "expected_goals": 0.0498,
                "expected_assists": 0.0673,
                "shots_on_target": 0.0,
                "big_chances_created": 0.182,
                "xgot": 0.0,
                "ball_carries": 4.4076,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.3962,
                "shots_off_target": 0.1001,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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": 79.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1165,
                "fifa_rank": 874.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            }
          ]
        },
        "Pascal Struijk": {
          "player_id": 836675,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 190,
          "market_value": 23000000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7966,
            "minutes": 14,
            "total_pass": 18,
            "accurate_pass": 17,
            "duels_won": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 8,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 20,
            "possession_lost": 1.06,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "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.0,
            "expected_assists": 0.0055,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 7,
            "total_progression": 10,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.339,
            "bench_expected_minutes": 14.45,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "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_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 86,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1606,
                "expected_assists": 0.0032,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 50,
                "accurate_pass": 44,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 3,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 12,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0082,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 23,
                "clearances": 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": 16363258,
              "match_date": "2026-09-05",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "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": 14023968,
              "match_date": "2026-05-24",
              "home_team": "West Ham United",
              "away_team": "Leeds United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Leeds United",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 64,
                "accurate_pass": 60,
                "tackles": 2,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 2,
                "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": 14023944,
              "match_date": "2026-05-11",
              "home_team": "Tottenham Hotspur",
              "away_team": "Leeds United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Leeds United",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 56,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0357,
                "expected_assists": 0.0073,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 16,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023940,
              "match_date": "2026-05-01",
              "home_team": "Leeds United",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Leeds United",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0549,
                "expected_assists": 0.0153,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 69,
                "accurate_pass": 58,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025044,
              "match_date": "2026-04-22",
              "home_team": "Bournemouth",
              "away_team": "Leeds United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Leeds United",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 22,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 14,
                "aerial_won": 5,
                "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": 14025036,
              "match_date": "2026-04-18",
              "home_team": "Leeds United",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Leeds United",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.165,
                "expected_assists": 0.0047,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 57,
                "accurate_pass": 54,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025024,
              "match_date": "2026-04-13",
              "home_team": "Manchester United",
              "away_team": "Leeds United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Leeds United",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2259,
                "expected_assists": 0.0038,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 49,
                "accurate_pass": 48,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 3,
                "duels_won": 6,
                "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": 14024018,
              "match_date": "2026-03-21",
              "home_team": "Leeds United",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Leeds United",
              "opponent": "Brentford",
              "stats": {
                "minutes": 83,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.053,
                "expected_assists": 0.1838,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 63,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 7,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3241,
            "combined_rank_score": 1184.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 584.0,
            "sofascore_rating": 6.7941,
            "sofascore_appearances": 34.0,
            "fifa_rank": 1784.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7966,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pascal Struijk",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Afonso Moreira",
                  "ranking": 3236
                },
                {
                  "player_name": "Largie Ramazani",
                  "ranking": 3237
                },
                {
                  "player_name": "Zian Flemming",
                  "ranking": 3238
                },
                {
                  "player_name": "Morata",
                  "ranking": 3239
                },
                {
                  "player_name": "Tarik Muharemović",
                  "ranking": 3240
                }
              ],
              "lower": [
                {
                  "player_name": "Danilo Cataldi",
                  "ranking": 3242
                },
                {
                  "player_name": "Håkon Evjen",
                  "ranking": 3243
                },
                {
                  "player_name": "Jayden Bogle",
                  "ranking": 3244
                },
                {
                  "player_name": "Jérémie Boga",
                  "ranking": 3245
                },
                {
                  "player_name": "Jean Butez",
                  "ranking": 3246
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 37,
          "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": 37,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 14.45166323111848,
            "bench_appearance_prob": 0.33871196505084,
            "market_value_adjustment": 1.0055,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection scaled from XGBoost D_service (37 historical appearances) to 14.5 expected mins (appearance prob 0.34); 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.2925,
                "tackles": 0.5224,
                "tackles_won": 0.3304,
                "clearances": 1.6198,
                "aerial_won": 0.747,
                "total_shots": 0.1577,
                "rating": 6.7966,
                "minutes": 11.55,
                "total_pass": 14.0952,
                "accurate_pass": 13.2526,
                "duels_won": 0.0,
                "total_long_balls": 0.5617,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 6.7881,
                "accurate_own_half_passes": 6.5072,
                "total_opp_half_passes": 7.3071,
                "accurate_opp_half_passes": 6.7454,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 15.931,
                "possession_lost": 0.8426,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5617,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.2809,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0044,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.8649,
                "total_progression": 8.2149,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1577
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:05:07.485697+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 622,
                    "rows": 20280
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Coventry City",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.1278,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Leeds United",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.1086,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-05-11",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-01",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-04-13",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Brentford",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.9053,
                  "aerialWon": 2.3617,
                  "totalClearance_p90": 7.3583,
                  "totalTackle": 0.9629,
                  "totalPass": 41.67
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.29253339767456055,
                    "model_output": 0.2925,
                    "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.4986
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0393
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0075
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0059
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0051
                        }
                      ],
                      "others": -0.0202,
                      "total": 0.2925,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.871268
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.116025
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.0238
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.018643
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": -0.016233
                        }
                      ],
                      "others_margin": -0.066495
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5224348902702332,
                    "model_output": 0.5224,
                    "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.7478
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0281
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0159
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0151
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0136
                        }
                      ],
                      "others": -0.051,
                      "total": 0.5224,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.768884
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.044442
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.026039
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.025318
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.023388
                        }
                      ],
                      "others_margin": -0.093274
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.330358624458313,
                    "model_output": 0.3304,
                    "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.4273
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0164
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0144
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0112
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0105
                        }
                      ],
                      "others": -0.0442,
                      "total": 0.3304,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.6934
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.039097
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.035644
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.028788
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.02759
                        }
                      ],
                      "others_margin": -0.125644
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.6198068857192993,
                    "model_output": 1.6198,
                    "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.2215
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.136
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0928
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0837
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0582
                        }
                      ],
                      "others": 0.0192,
                      "total": 1.6198,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.031812
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.104842
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.065703
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.055823
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.037047
                        }
                      ],
                      "others_margin": 0.011919
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7469623684883118,
                    "model_output": 0.747,
                    "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.8888
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1233
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0434
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0435
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0433
                        }
                      ],
                      "others": 0.0003,
                      "total": 0.747,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.030235
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.223041
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.067991
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.063767
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.059777
                        }
                      ],
                      "others_margin": 0.000365
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.1576838493347168,
                    "model_output": 0.1577,
                    "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.2652
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.013
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.0121
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0119
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0095
                        }
                      ],
                      "others": -0.0445,
                      "total": 0.1577,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.26522
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.012992
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.012058
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.011917
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.009519
                        }
                      ],
                      "others_margin": -0.044613
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7966108322143555,
                    "model_output": 6.7966,
                    "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": "is_starting_11",
                          "contribution": -0.0338
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0259
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0129
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0097
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0094
                        }
                      ],
                      "others": 0.0068,
                      "total": 6.7966,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.03376
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.02585
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.012924
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.00974
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.009409
                        }
                      ],
                      "others_margin": 0.006794
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 37,
                  "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.0055, quality 0.660)",
              "stats": {
                "interceptions": 0.2941,
                "tackles": 0.5253,
                "tackles_won": 0.3322,
                "clearances": 1.6287,
                "aerial_won": 0.7511,
                "total_shots": 0.1586,
                "rating": 6.7966,
                "minutes": 11.55,
                "total_pass": 14.1727,
                "accurate_pass": 13.3255,
                "duels_won": 0.0,
                "total_long_balls": 0.5648,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 6.8254,
                "accurate_own_half_passes": 6.543,
                "total_opp_half_passes": 7.3473,
                "accurate_opp_half_passes": 6.7825,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 16.0186,
                "possession_lost": 0.8472,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5648,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.2824,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0044,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.8972,
                "total_progression": 8.2601,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1586
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.0055,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 11.6 to 14.5 expected minutes (appearance prob 0.34)",
              "stats": {
                "interceptions": 0.368,
                "tackles": 0.6573,
                "tackles_won": 0.4157,
                "clearances": 2.0379,
                "aerial_won": 0.9398,
                "total_shots": 0.1984,
                "rating": 6.7966,
                "minutes": 14.45,
                "total_pass": 17.7333,
                "accurate_pass": 16.6732,
                "duels_won": 0.0,
                "total_long_balls": 0.7067,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.5401,
                "accurate_own_half_passes": 8.1868,
                "total_opp_half_passes": 9.1931,
                "accurate_opp_half_passes": 8.4864,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.0429,
                "possession_lost": 1.06,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7067,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.3533,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0055,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.3787,
                "total_progression": 10.3353,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1984,
                "bench_appearance_probability": 0.339,
                "bench_expected_minutes": 14.45
              },
              "params": {
                "expected_minutes": 14.45,
                "projection_minutes": 11.55,
                "minutes_scale": 1.2512,
                "appearance_probability": 0.339
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.368,
                "tackles": 0.6573,
                "tackles_won": 0.4157,
                "clearances": 2.0379,
                "aerial_won": 0.9398,
                "total_shots": 0.1984,
                "rating": 6.7966,
                "minutes": 14.45,
                "total_pass": 17.7333,
                "accurate_pass": 16.6732,
                "duels_won": 0.0,
                "total_long_balls": 0.7067,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.5401,
                "accurate_own_half_passes": 8.1868,
                "total_opp_half_passes": 9.1931,
                "accurate_opp_half_passes": 8.4864,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.0429,
                "possession_lost": 1.06,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7067,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.3533,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0055,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.3787,
                "total_progression": 10.3353,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1984,
                "bench_appearance_probability": 0.339,
                "bench_expected_minutes": 14.45
              },
              "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.368,
                "tackles": 0.6573,
                "tackles_won": 0.4157,
                "clearances": 2.0379,
                "aerial_won": 0.9398,
                "total_shots": 0.1984,
                "rating": 6.7966,
                "minutes": 14.45,
                "total_pass": 17.7333,
                "accurate_pass": 16.6732,
                "duels_won": 0.0,
                "total_long_balls": 0.7067,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.5401,
                "accurate_own_half_passes": 8.1868,
                "total_opp_half_passes": 9.1931,
                "accurate_opp_half_passes": 8.4864,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.0429,
                "possession_lost": 1.06,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7067,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.3533,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0055,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.3787,
                "total_progression": 10.3353,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1984,
                "bench_appearance_probability": 0.339,
                "bench_expected_minutes": 14.45,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.339,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 13 by projected rating, fifa_overall 76.0; not used by the projection)",
              "stats": {
                "interceptions": 0.368,
                "tackles": 0.6573,
                "tackles_won": 0.4157,
                "clearances": 2.0379,
                "aerial_won": 0.9398,
                "total_shots": 0.1984,
                "rating": 6.7966,
                "minutes": 14.45,
                "total_pass": 17.7333,
                "accurate_pass": 16.6732,
                "duels_won": 0.0,
                "total_long_balls": 0.7067,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.5401,
                "accurate_own_half_passes": 8.1868,
                "total_opp_half_passes": 9.1931,
                "accurate_opp_half_passes": 8.4864,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.0429,
                "possession_lost": 1.06,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7067,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.3533,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0055,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.3787,
                "total_progression": 10.3353,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1984,
                "bench_appearance_probability": 0.339,
                "bench_expected_minutes": 14.45,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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": 13,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3241,
                "fifa_rank": 1784.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Georginio Rutter": {
          "player_id": 946695,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 182,
          "market_value": 31000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0616,
            "assist_rate": 0.112,
            "assists": 0,
            "expected_goals": 0.1132,
            "goal_rate": 0.1174,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.681,
            "minutes": 23,
            "total_pass": 7,
            "accurate_pass": 4,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 6.9655,
            "dispossessed": 0.4819,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0911,
            "ball_carries": 7,
            "total_progression": 27,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.33,
            "bench_expected_minutes": 23.11,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "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": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363650,
              "match_date": "2026-09-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 14,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0936,
                "expected_assists": 0.0068,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "aerial_won": 2,
                "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": 16363236,
              "match_date": "2026-08-23",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0786,
                "expected_assists": 0.4434,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 12,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 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": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 16,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0617,
                "expected_assists": 0.0024,
                "total_shots": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "interceptions": 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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 25,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3551,
                "expected_assists": 0.3207,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 2,
                "key_pass": 1,
                "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": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 14,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 6,
                "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"
            },
            {
              "match_id": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 10,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2606,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "key_pass": 1,
                "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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 83,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1238,
                "expected_assists": 0.105,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 15,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0835,
                "expected_assists": 0.0068,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 5,
                "accurate_pass": 5,
                "tackles": 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": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 15,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0229,
                "expected_assists": 0.0049,
                "total_shots": 1,
                "total_pass": 5,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 14024015,
              "match_date": "2026-03-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 15,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 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": 1939,
            "combined_rank_score": 746.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 68.0,
            "sofascore_rating": 7.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1425.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.681,
            "source_file": "data/player_rankings.csv",
            "player_name": "Georginio Rutter",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Óscar Opazo",
                  "ranking": 1934
                },
                {
                  "player_name": "Kyrian Nwoko",
                  "ranking": 1935
                },
                {
                  "player_name": "Miguel Gutiérrez",
                  "ranking": 1936
                },
                {
                  "player_name": "Conor Bradley",
                  "ranking": 1937
                },
                {
                  "player_name": "Matías Soulé",
                  "ranking": 1938
                }
              ],
              "lower": [
                {
                  "player_name": "Luke Shaw",
                  "ranking": 1940
                },
                {
                  "player_name": "Thomas Müller",
                  "ranking": 1941
                },
                {
                  "player_name": "Manjrekar James",
                  "ranking": 1942
                },
                {
                  "player_name": "Ayoze",
                  "ranking": 1943
                },
                {
                  "player_name": "Alisher Shukurov",
                  "ranking": 1944
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 34,
          "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": 34,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.110658378070404,
            "bench_appearance_prob": 0.33,
            "market_value_adjustment": 1.0085,
            "fbref_prior_metrics": {
              "squad": "Brighton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 1.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost M_service (34 historical appearances) to 23.1 expected mins (appearance prob 0.33); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.5593,
                "expected_assists": 0.0456,
                "assists": 0.0823,
                "assist_rate": 0.0823,
                "expected_goals": 0.0838,
                "goals": 0.0873,
                "goal_rate": 0.0873,
                "shots_on_target": 0.2457,
                "total_shots": 0.8737,
                "rating": 6.681,
                "minutes": 17.25,
                "total_pass": 5.0538,
                "accurate_pass": 3.2911,
                "duels_won": 1.9686,
                "total_long_balls": 0.3711,
                "accurate_long_balls": 0.0907,
                "total_own_half_passes": 0.8518,
                "accurate_own_half_passes": 0.7442,
                "total_opp_half_passes": 4.202,
                "accurate_opp_half_passes": 2.5469,
                "crosses_total": 0.5023,
                "crosses_accurate": 0.0891,
                "touches": 12.5156,
                "possession_lost": 5.1553,
                "dispossessed": 0.4778,
                "duels_lost": 2.1692,
                "aerial_won": 0.485,
                "aerial_lost": 0.3066,
                "interceptions": 0.2379,
                "tackles_won": 0.3103,
                "tackles": 0.4802,
                "clearances": 0.0,
                "total_contest": 1.7886,
                "won_contest": 0.7256,
                "challenges_lost": 0.2597,
                "fouls": 0.1854,
                "fouls_drawn": 0.4484,
                "blocks": 0.0,
                "big_chances_created": 0.0891,
                "big_chances_missed": 0.2939,
                "xgot": 0.0674,
                "ball_carries": 4.8904,
                "total_progression": 19.6223,
                "progressive_carries": 0.6666,
                "shots_off_target": 0.628
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Arsenal",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.1088,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0925,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0668,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Burnley",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Liverpool FC",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 1.1742,
                  "creative_index": 0.2988,
                  "expectedGoals": 0.095,
                  "expectedAssists": 0.1246,
                  "onTargetScoringAttempt": 0.2183
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5593474507331848,
                    "model_output": 0.5593,
                    "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.3711
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0452
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0309
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0283
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0155
                        }
                      ],
                      "others": 0.0427,
                      "total": 0.5593,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.542669
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.084168
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.056772
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.054902
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.030441
                        }
                      ],
                      "others_margin": 0.079564
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04560910537838936,
                    "model_output": 0.0456,
                    "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.0375
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0056
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0031
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.003
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0008,
                      "total": 0.0456,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.574753
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.123967
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.070533
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.064068
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.051341
                        }
                      ],
                      "others_margin": -0.01614
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0823497623205185,
                    "model_output": 0.0823,
                    "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.0191
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0093
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0063
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0057
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0049
                        }
                      ],
                      "others": 0.0026,
                      "total": 0.0823,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.253509
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.13181
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.087825
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.079846
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.064014
                        }
                      ],
                      "others_margin": 0.031291
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08375520259141922,
                    "model_output": 0.0838,
                    "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.0389
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0078
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0052
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0029
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0021
                        }
                      ],
                      "others": 0.0103,
                      "total": 0.0838,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.530302
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.131031
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.079385
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.041894
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.029464
                        }
                      ],
                      "others_margin": 0.12859
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08734822273254395,
                    "model_output": 0.0873,
                    "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.0367
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0088
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0075
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0081
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0056
                        }
                      ],
                      "others": 0.0076,
                      "total": 0.0873,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.470671
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.134262
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.102604
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.099354
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.067713
                        }
                      ],
                      "others_margin": 0.090725
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2456512451171875,
                    "model_output": 0.2457,
                    "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.1566
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0289
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0252
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0102
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0088
                        }
                      ],
                      "others": 0.0228,
                      "total": 0.2457,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.660474
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.159421
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.120997
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.04497
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.03879
                        }
                      ],
                      "others_margin": 0.097073
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8736072778701782,
                    "model_output": 0.8736,
                    "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.4339
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.074
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0546
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0345
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0304
                        }
                      ],
                      "others": 0.1235,
                      "total": 0.8736,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.433941
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.074029
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.054634
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.034508
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.030361
                        }
                      ],
                      "others_margin": 0.123551
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.680994033813477,
                    "model_output": 6.681,
                    "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.0832
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0553
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0205
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0191
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.0162,
                      "total": 6.681,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.083227
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.055268
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.020546
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.019104
                        },
                        {
                          "name": "rating",
                          "margin": -0.014604
                        }
                      ],
                      "others_margin": -0.01622
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 13,
                  "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.725)",
              "stats": {
                "key_pass": 0.5641,
                "expected_assists": 0.046,
                "assists": 0.083,
                "assist_rate": 0.083,
                "expected_goals": 0.0845,
                "goals": 0.0881,
                "goal_rate": 0.0881,
                "shots_on_target": 0.2477,
                "total_shots": 0.8811,
                "rating": 6.681,
                "minutes": 17.25,
                "total_pass": 5.0968,
                "accurate_pass": 3.3191,
                "duels_won": 1.9853,
                "total_long_balls": 0.3743,
                "accurate_long_balls": 0.0915,
                "total_own_half_passes": 0.859,
                "accurate_own_half_passes": 0.7505,
                "total_opp_half_passes": 4.2377,
                "accurate_opp_half_passes": 2.5685,
                "crosses_total": 0.5066,
                "crosses_accurate": 0.0899,
                "touches": 12.622,
                "possession_lost": 5.1991,
                "dispossessed": 0.4819,
                "duels_lost": 2.1876,
                "aerial_won": 0.4891,
                "aerial_lost": 0.3092,
                "interceptions": 0.2399,
                "tackles_won": 0.3129,
                "tackles": 0.4843,
                "clearances": 0.0,
                "total_contest": 1.8038,
                "won_contest": 0.7318,
                "challenges_lost": 0.2619,
                "fouls": 0.187,
                "fouls_drawn": 0.4522,
                "blocks": 0.0,
                "big_chances_created": 0.0899,
                "big_chances_missed": 0.2964,
                "xgot": 0.068,
                "ball_carries": 4.932,
                "total_progression": 19.7891,
                "progressive_carries": 0.6723,
                "shots_off_target": 0.6333
              },
              "params": {
                "market_value_eur": 31000000,
                "quality_factor": 0.7249,
                "boost_factor": 1.0085,
                "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.0056)",
              "stats": {
                "key_pass": 0.5641,
                "expected_assists": 0.046,
                "assists": 0.0836,
                "assist_rate": 0.0836,
                "expected_goals": 0.0845,
                "goals": 0.0876,
                "goal_rate": 0.0876,
                "shots_on_target": 0.2463,
                "total_shots": 0.8783,
                "rating": 6.681,
                "minutes": 17.25,
                "total_pass": 5.0968,
                "accurate_pass": 3.3191,
                "duels_won": 1.9853,
                "total_long_balls": 0.3743,
                "accurate_long_balls": 0.0915,
                "total_own_half_passes": 0.859,
                "accurate_own_half_passes": 0.7505,
                "total_opp_half_passes": 4.2377,
                "accurate_opp_half_passes": 2.5685,
                "crosses_total": 0.5038,
                "crosses_accurate": 0.0899,
                "touches": 12.622,
                "possession_lost": 5.1991,
                "dispossessed": 0.4819,
                "duels_lost": 2.1876,
                "aerial_won": 0.4891,
                "aerial_lost": 0.3092,
                "interceptions": 0.2386,
                "tackles_won": 0.3133,
                "tackles": 0.4843,
                "clearances": 0.0,
                "total_contest": 1.8038,
                "won_contest": 0.7318,
                "challenges_lost": 0.2619,
                "fouls": 0.186,
                "fouls_drawn": 0.4497,
                "blocks": 0.0,
                "big_chances_created": 0.0899,
                "big_chances_missed": 0.2964,
                "xgot": 0.068,
                "ball_carries": 4.932,
                "total_progression": 19.7891,
                "progressive_carries": 0.6723,
                "shots_off_target": 0.6333
              },
              "params": {
                "blend_weight": 0.0056,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1917,
                "prior_reliability": 0.0667,
                "competition": "Premier League",
                "squad": "Brighton"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.2 to 23.1 expected minutes (appearance prob 0.33)",
              "stats": {
                "key_pass": 0.7558,
                "expected_assists": 0.0616,
                "assists": 0.112,
                "assist_rate": 0.112,
                "expected_goals": 0.1132,
                "goals": 0.1174,
                "goal_rate": 0.1174,
                "shots_on_target": 0.33,
                "total_shots": 1.1785,
                "rating": 6.681,
                "minutes": 23.11,
                "total_pass": 6.8284,
                "accurate_pass": 4.4468,
                "duels_won": 2.6598,
                "total_long_balls": 0.5015,
                "accurate_long_balls": 0.1226,
                "total_own_half_passes": 1.1508,
                "accurate_own_half_passes": 1.0055,
                "total_opp_half_passes": 5.6775,
                "accurate_opp_half_passes": 3.4411,
                "crosses_total": 0.675,
                "crosses_accurate": 0.1204,
                "touches": 16.9103,
                "possession_lost": 6.9655,
                "dispossessed": 0.4819,
                "duels_lost": 2.9308,
                "aerial_won": 0.6553,
                "aerial_lost": 0.3092,
                "interceptions": 0.3197,
                "tackles_won": 0.4197,
                "tackles": 0.6488,
                "clearances": 0.0,
                "total_contest": 2.4166,
                "won_contest": 0.9804,
                "challenges_lost": 0.2619,
                "fouls": 0.2492,
                "fouls_drawn": 0.6025,
                "blocks": 0.0,
                "big_chances_created": 0.1204,
                "big_chances_missed": 0.3971,
                "xgot": 0.0911,
                "ball_carries": 6.6076,
                "total_progression": 26.5124,
                "progressive_carries": 0.9007,
                "shots_off_target": 0.8485,
                "bench_appearance_probability": 0.33,
                "bench_expected_minutes": 23.11
              },
              "params": {
                "expected_minutes": 23.11,
                "projection_minutes": 17.25,
                "minutes_scale": 1.3397,
                "appearance_probability": 0.33
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7558,
                "expected_assists": 0.0616,
                "assists": 0.112,
                "assist_rate": 0.112,
                "expected_goals": 0.1132,
                "goals": 0.1174,
                "goal_rate": 0.1174,
                "shots_on_target": 0.33,
                "total_shots": 1.1785,
                "rating": 6.681,
                "minutes": 23.11,
                "total_pass": 6.8284,
                "accurate_pass": 4.4468,
                "duels_won": 2.6598,
                "total_long_balls": 0.5015,
                "accurate_long_balls": 0.1226,
                "total_own_half_passes": 1.1508,
                "accurate_own_half_passes": 1.0055,
                "total_opp_half_passes": 5.6775,
                "accurate_opp_half_passes": 3.4411,
                "crosses_total": 0.675,
                "crosses_accurate": 0.1204,
                "touches": 16.9103,
                "possession_lost": 6.9655,
                "dispossessed": 0.4819,
                "duels_lost": 2.9308,
                "aerial_won": 0.6553,
                "aerial_lost": 0.3092,
                "interceptions": 0.3197,
                "tackles_won": 0.4197,
                "tackles": 0.6488,
                "clearances": 0.0,
                "total_contest": 2.4166,
                "won_contest": 0.9804,
                "challenges_lost": 0.2619,
                "fouls": 0.2492,
                "fouls_drawn": 0.6025,
                "blocks": 0.0,
                "big_chances_created": 0.1204,
                "big_chances_missed": 0.3971,
                "xgot": 0.0911,
                "ball_carries": 6.6076,
                "total_progression": 26.5124,
                "progressive_carries": 0.9007,
                "shots_off_target": 0.8485,
                "bench_appearance_probability": 0.33,
                "bench_expected_minutes": 23.11
              },
              "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.7558,
                "expected_assists": 0.0616,
                "assist_rate": 0.112,
                "assists": 0,
                "expected_goals": 0.1132,
                "goal_rate": 0.1174,
                "goals": 0,
                "shots_on_target": 0.33,
                "total_shots": 1.1785,
                "rating": 6.681,
                "minutes": 23.11,
                "total_pass": 6.8284,
                "accurate_pass": 4.4468,
                "duels_won": 2.6598,
                "total_long_balls": 0.5015,
                "accurate_long_balls": 0.1226,
                "total_own_half_passes": 1.1508,
                "accurate_own_half_passes": 1.0055,
                "total_opp_half_passes": 5.6775,
                "accurate_opp_half_passes": 3.4411,
                "crosses_total": 0.675,
                "crosses_accurate": 0.1204,
                "touches": 16.9103,
                "possession_lost": 6.9655,
                "dispossessed": 0.4819,
                "duels_lost": 2.9308,
                "aerial_won": 0.6553,
                "aerial_lost": 0.3092,
                "interceptions": 0.3197,
                "tackles_won": 0.4197,
                "tackles": 0.6488,
                "clearances": 0.0,
                "total_contest": 2.4166,
                "won_contest": 0.9804,
                "challenges_lost": 0.2619,
                "fouls": 0.2492,
                "fouls_drawn": 0.6025,
                "blocks": 0.0,
                "big_chances_created": 0.1204,
                "big_chances_missed": 0.3971,
                "xgot": 0.0911,
                "ball_carries": 6.6076,
                "total_progression": 26.5124,
                "progressive_carries": 0.9007,
                "shots_off_target": 0.8485,
                "bench_appearance_probability": 0.33,
                "bench_expected_minutes": 23.11,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.33,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 18 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "key_pass": 0.7558,
                "expected_assists": 0.0616,
                "assist_rate": 0.112,
                "assists": 0,
                "expected_goals": 0.1132,
                "goal_rate": 0.1174,
                "goals": 0,
                "shots_on_target": 0.33,
                "total_shots": 1.1785,
                "rating": 6.681,
                "minutes": 23.11,
                "total_pass": 6.8284,
                "accurate_pass": 4.4468,
                "duels_won": 2.6598,
                "total_long_balls": 0.5015,
                "accurate_long_balls": 0.1226,
                "total_own_half_passes": 1.1508,
                "accurate_own_half_passes": 1.0055,
                "total_opp_half_passes": 5.6775,
                "accurate_opp_half_passes": 3.4411,
                "crosses_total": 0.675,
                "crosses_accurate": 0.1204,
                "touches": 16.9103,
                "possession_lost": 6.9655,
                "dispossessed": 0.4819,
                "duels_lost": 2.9308,
                "aerial_won": 0.6553,
                "aerial_lost": 0.3092,
                "interceptions": 0.3197,
                "tackles_won": 0.4197,
                "tackles": 0.6488,
                "clearances": 0.0,
                "total_contest": 2.4166,
                "won_contest": 0.9804,
                "challenges_lost": 0.2619,
                "fouls": 0.2492,
                "fouls_drawn": 0.6025,
                "blocks": 0.0,
                "big_chances_created": 0.1204,
                "big_chances_missed": 0.3971,
                "xgot": 0.0911,
                "ball_carries": 6.6076,
                "total_progression": 26.5124,
                "progressive_carries": 0.9007,
                "shots_off_target": 0.8485,
                "bench_appearance_probability": 0.33,
                "bench_expected_minutes": 23.11,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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": 77.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": 1939,
                "fifa_rank": 1425.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            }
          ]
        },
        "Brajan Gruda": {
          "player_id": 1198075,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 178,
          "market_value": 29000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0657,
            "assist_rate": 0.0824,
            "assists": 0,
            "expected_goals": 0.0633,
            "goal_rate": 0.0777,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7344,
            "minutes": 23,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 7.0481,
            "dispossessed": 0.5214,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 3,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0872,
            "ball_carries": 7,
            "total_progression": 30,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.548,
            "bench_expected_minutes": 23.05,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "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": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 15129445,
              "match_date": "2026-01-19",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 66,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0553,
                "expected_assists": 0.0678,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 35,
                "accurate_pass": 29,
                "key_pass": 2,
                "tackles": 1,
                "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"
            },
            {
              "match_id": 14025061,
              "match_date": "2026-01-07",
              "home_team": "Manchester City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 13,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0045,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 3,
                "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": 14025278,
              "match_date": "2026-01-03",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 87,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0195,
                "expected_assists": 0.0393,
                "total_shots": 1,
                "total_pass": 32,
                "accurate_pass": 22,
                "key_pass": 2,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 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": 14025272,
              "match_date": "2025-12-30",
              "home_team": "West Ham United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 32,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0781,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 12,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 3,
                "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": 14025234,
              "match_date": "2025-12-27",
              "home_team": "Arsenal",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 45,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 9,
                "tackles": 1,
                "tackles_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025218,
              "match_date": "2025-12-20",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 86,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0923,
                "expected_assists": 0.0733,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 34,
                "key_pass": 4,
                "tackles": 2,
                "interceptions": 1,
                "duels_won": 8,
                "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": 14025198,
              "match_date": "2025-12-13",
              "home_team": "Liverpool FC",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 64,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0466,
                "expected_assists": 0.0072,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 12,
                "tackles": 3,
                "tackles_won": 2,
                "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": 14025159,
              "match_date": "2025-12-07",
              "home_team": "Brighton & Hove Albion",
              "away_team": "West Ham United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 18,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0154,
                "expected_assists": 0.0835,
                "total_shots": 1,
                "total_pass": 13,
                "accurate_pass": 10,
                "key_pass": 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": 14025129,
              "match_date": "2025-12-03",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 77,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0844,
                "expected_assists": 0.1269,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 16,
                "accurate_pass": 13,
                "tackles": 1,
                "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": 14025111,
              "match_date": "2025-11-30",
              "home_team": "Nottingham Forest",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 3185,
            "combined_rank_score": 1149.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 784.0,
            "sofascore_rating": 6.6333,
            "sofascore_appearances": 18.0,
            "fifa_rank": 1514.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.7344,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brajan Gruda",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Guillaume Restes",
                  "ranking": 3186
                },
                {
                  "player_name": "Johan Mojica",
                  "ranking": 3187
                },
                {
                  "player_name": "Alexsandro",
                  "ranking": 3188
                },
                {
                  "player_name": "Mërgim Vojvoda",
                  "ranking": 3189
                },
                {
                  "player_name": "Sorba Thomas",
                  "ranking": 3190
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 18,
          "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": 18,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 23.05159379857936,
            "bench_appearance_prob": 0.5477997181172436,
            "market_value_adjustment": 1.0134,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (18 historical appearances) to 23.1 expected mins (appearance prob 0.55)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.5991,
                "expected_assists": 0.0527,
                "assists": 0.0662,
                "assist_rate": 0.0662,
                "expected_goals": 0.0509,
                "goals": 0.0624,
                "goal_rate": 0.0624,
                "shots_on_target": 0.2123,
                "total_shots": 0.6245,
                "rating": 6.7344,
                "minutes": 18.74,
                "total_pass": 8.1228,
                "accurate_pass": 5.6469,
                "duels_won": 1.561,
                "total_long_balls": 0.3719,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.8164,
                "accurate_own_half_passes": 1.0625,
                "total_opp_half_passes": 6.3064,
                "accurate_opp_half_passes": 4.5844,
                "crosses_total": 0.4991,
                "crosses_accurate": 0.2699,
                "touches": 14.2118,
                "possession_lost": 5.654,
                "dispossessed": 0.5145,
                "duels_lost": 2.2114,
                "aerial_won": 0.5195,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0975,
                "tackles": 0.2236,
                "clearances": 0.1588,
                "total_contest": 2.1079,
                "won_contest": 0.6841,
                "challenges_lost": 0.1427,
                "fouls": 0.1303,
                "fouls_drawn": 0.1338,
                "blocks": 0.0,
                "big_chances_created": 0.0829,
                "big_chances_missed": 0.0433,
                "xgot": 0.07,
                "ball_carries": 5.6206,
                "total_progression": 23.9638,
                "progressive_carries": 0.5405,
                "shots_off_target": 0.4122
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-10T10:05:58.420391+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 892,
                    "rows": 23283
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-01-19",
                    "opponent": "Bournemouth",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1585,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-01-07",
                    "opponent": "Manchester City",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1347,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Burnley",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.1145,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2025-12-30",
                    "opponent": "West Ham United",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0973,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-12-27",
                    "opponent": "Arsenal",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0827,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2025-12-20",
                    "opponent": "Sunderland",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.0703,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2025-12-13",
                    "opponent": "Liverpool FC",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0598,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2025-12-07",
                    "opponent": "West Ham United",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0508,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-12-03",
                    "opponent": "Aston Villa",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0432,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2025-11-30",
                    "opponent": "Nottingham Forest",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0367,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 18.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.7295,
                  "creative_index": 0.4925,
                  "expectedGoals": 0.0454,
                  "expectedAssists": 0.048,
                  "onTargetScoringAttempt": 0.3262
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.599088191986084,
                    "model_output": 0.5991,
                    "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.3746
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0299
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0233
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0163
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0157
                        }
                      ],
                      "others": 0.0489,
                      "total": 0.5991,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.549355
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.056859
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.043972
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.031033
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.02896
                        }
                      ],
                      "others_margin": 0.084945
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05270303040742874,
                    "model_output": 0.0527,
                    "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.0361
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0065
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0038
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0022
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0016
                        }
                      ],
                      "others": 0.0019,
                      "total": 0.0527,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.545804
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.140329
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.084287
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.045726
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.03198
                        }
                      ],
                      "others_margin": 0.037105
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.066159687936306,
                    "model_output": 0.0662,
                    "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.0237
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0077
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0068
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.004
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0103,
                      "total": 0.0662,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.325116
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.118131
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.09296
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.05135
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.044653
                        }
                      ],
                      "others_margin": -0.145951
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05085800215601921,
                    "model_output": 0.0509,
                    "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.0425
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0063
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0036
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.002
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0019
                        }
                      ],
                      "others": 0.0002,
                      "total": 0.0509,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.598416
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.11442
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.064629
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.037279
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.037171
                        }
                      ],
                      "others_margin": 0.004274
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06237940117716789,
                    "model_output": 0.0624,
                    "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.0389
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.007
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0053
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0044
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.0027,
                      "total": 0.0624,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.508056
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.127273
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.09832
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.07441
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.058934
                        }
                      ],
                      "others_margin": -0.044443
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.21226856112480164,
                    "model_output": 0.2123,
                    "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.1539
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0253
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0101
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0055
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0053
                        }
                      ],
                      "others": 0.0176,
                      "total": 0.2123,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.644573
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.138579
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.050175
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.027148
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.026712
                        }
                      ],
                      "others_margin": 0.086816
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6244423985481262,
                    "model_output": 0.6244,
                    "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.4685
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0647
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0542
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0311
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0153
                        }
                      ],
                      "others": 0.0455,
                      "total": 0.6244,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.468537
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.064658
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.05424
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.031098
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.015319
                        }
                      ],
                      "others_margin": 0.04568
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.734403133392334,
                    "model_output": 6.7344,
                    "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.0937
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0319
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0103
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0102
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.006
                        }
                      ],
                      "others": -0.0154,
                      "total": 6.7344,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.093689
                        },
                        {
                          "name": "rating",
                          "margin": -0.031872
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.010308
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.010176
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.006019
                        }
                      ],
                      "others_margin": -0.015408
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 18,
                  "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.0134, quality 0.710)",
              "stats": {
                "key_pass": 0.6071,
                "expected_assists": 0.0534,
                "assists": 0.067,
                "assist_rate": 0.067,
                "expected_goals": 0.0515,
                "goals": 0.0632,
                "goal_rate": 0.0632,
                "shots_on_target": 0.2151,
                "total_shots": 0.6328,
                "rating": 6.7344,
                "minutes": 18.74,
                "total_pass": 8.2316,
                "accurate_pass": 5.7226,
                "duels_won": 1.5819,
                "total_long_balls": 0.3769,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.8407,
                "accurate_own_half_passes": 1.0767,
                "total_opp_half_passes": 6.3909,
                "accurate_opp_half_passes": 4.6458,
                "crosses_total": 0.5058,
                "crosses_accurate": 0.2735,
                "touches": 14.4022,
                "possession_lost": 5.7298,
                "dispossessed": 0.5214,
                "duels_lost": 2.241,
                "aerial_won": 0.5265,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0988,
                "tackles": 0.2266,
                "clearances": 0.1609,
                "total_contest": 2.1361,
                "won_contest": 0.6933,
                "challenges_lost": 0.1446,
                "fouls": 0.132,
                "fouls_drawn": 0.1356,
                "blocks": 0.0,
                "big_chances_created": 0.084,
                "big_chances_missed": 0.0439,
                "xgot": 0.0709,
                "ball_carries": 5.6959,
                "total_progression": 24.2849,
                "progressive_carries": 0.5477,
                "shots_off_target": 0.4177
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0134,
                "reference_quality": 0.505,
                "history_matches": 18,
                "history_shrink": 0.2174,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.7 to 23.1 expected minutes (appearance prob 0.55)",
              "stats": {
                "key_pass": 0.7468,
                "expected_assists": 0.0657,
                "assists": 0.0824,
                "assist_rate": 0.0824,
                "expected_goals": 0.0633,
                "goals": 0.0777,
                "goal_rate": 0.0777,
                "shots_on_target": 0.2646,
                "total_shots": 0.7784,
                "rating": 6.7344,
                "minutes": 23.05,
                "total_pass": 10.1255,
                "accurate_pass": 7.0392,
                "duels_won": 1.9459,
                "total_long_balls": 0.4636,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.2642,
                "accurate_own_half_passes": 1.3244,
                "total_opp_half_passes": 7.8613,
                "accurate_opp_half_passes": 5.7147,
                "crosses_total": 0.6222,
                "crosses_accurate": 0.3364,
                "touches": 17.7158,
                "possession_lost": 7.0481,
                "dispossessed": 0.5214,
                "duels_lost": 2.7566,
                "aerial_won": 0.6476,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1215,
                "tackles": 0.2787,
                "clearances": 0.1979,
                "total_contest": 2.6276,
                "won_contest": 0.8528,
                "challenges_lost": 0.1446,
                "fouls": 0.1624,
                "fouls_drawn": 0.1668,
                "blocks": 0.0,
                "big_chances_created": 0.1033,
                "big_chances_missed": 0.054,
                "xgot": 0.0872,
                "ball_carries": 7.0064,
                "total_progression": 29.8722,
                "progressive_carries": 0.6737,
                "shots_off_target": 0.5138,
                "bench_appearance_probability": 0.548,
                "bench_expected_minutes": 23.05
              },
              "params": {
                "expected_minutes": 23.05,
                "projection_minutes": 18.74,
                "minutes_scale": 1.2301,
                "appearance_probability": 0.548
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7468,
                "expected_assists": 0.0657,
                "assists": 0.0824,
                "assist_rate": 0.0824,
                "expected_goals": 0.0633,
                "goals": 0.0777,
                "goal_rate": 0.0777,
                "shots_on_target": 0.2646,
                "total_shots": 0.7784,
                "rating": 6.7344,
                "minutes": 23.05,
                "total_pass": 10.1255,
                "accurate_pass": 7.0392,
                "duels_won": 1.9459,
                "total_long_balls": 0.4636,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.2642,
                "accurate_own_half_passes": 1.3244,
                "total_opp_half_passes": 7.8613,
                "accurate_opp_half_passes": 5.7147,
                "crosses_total": 0.6222,
                "crosses_accurate": 0.3364,
                "touches": 17.7158,
                "possession_lost": 7.0481,
                "dispossessed": 0.5214,
                "duels_lost": 2.7566,
                "aerial_won": 0.6476,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1215,
                "tackles": 0.2787,
                "clearances": 0.1979,
                "total_contest": 2.6276,
                "won_contest": 0.8528,
                "challenges_lost": 0.1446,
                "fouls": 0.1624,
                "fouls_drawn": 0.1668,
                "blocks": 0.0,
                "big_chances_created": 0.1033,
                "big_chances_missed": 0.054,
                "xgot": 0.0872,
                "ball_carries": 7.0064,
                "total_progression": 29.8722,
                "progressive_carries": 0.6737,
                "shots_off_target": 0.5138,
                "bench_appearance_probability": 0.548,
                "bench_expected_minutes": 23.05
              },
              "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.7468,
                "expected_assists": 0.0657,
                "assist_rate": 0.0824,
                "assists": 0,
                "expected_goals": 0.0633,
                "goal_rate": 0.0777,
                "goals": 0,
                "shots_on_target": 0.2646,
                "total_shots": 0.7784,
                "rating": 6.7344,
                "minutes": 23.05,
                "total_pass": 10.1255,
                "accurate_pass": 7.0392,
                "duels_won": 1.9459,
                "total_long_balls": 0.4636,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.2642,
                "accurate_own_half_passes": 1.3244,
                "total_opp_half_passes": 7.8613,
                "accurate_opp_half_passes": 5.7147,
                "crosses_total": 0.6222,
                "crosses_accurate": 0.3364,
                "touches": 17.7158,
                "possession_lost": 7.0481,
                "dispossessed": 0.5214,
                "duels_lost": 2.7566,
                "aerial_won": 0.6476,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1215,
                "tackles": 0.2787,
                "clearances": 0.1979,
                "total_contest": 2.6276,
                "won_contest": 0.8528,
                "challenges_lost": 0.1446,
                "fouls": 0.1624,
                "fouls_drawn": 0.1668,
                "blocks": 0.0,
                "big_chances_created": 0.1033,
                "big_chances_missed": 0.054,
                "xgot": 0.0872,
                "ball_carries": 7.0064,
                "total_progression": 29.8722,
                "progressive_carries": 0.6737,
                "shots_off_target": 0.5138,
                "bench_appearance_probability": 0.548,
                "bench_expected_minutes": 23.05,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.548,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 16 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "key_pass": 0.7468,
                "expected_assists": 0.0657,
                "assist_rate": 0.0824,
                "assists": 0,
                "expected_goals": 0.0633,
                "goal_rate": 0.0777,
                "goals": 0,
                "shots_on_target": 0.2646,
                "total_shots": 0.7784,
                "rating": 6.7344,
                "minutes": 23.05,
                "total_pass": 10.1255,
                "accurate_pass": 7.0392,
                "duels_won": 1.9459,
                "total_long_balls": 0.4636,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.2642,
                "accurate_own_half_passes": 1.3244,
                "total_opp_half_passes": 7.8613,
                "accurate_opp_half_passes": 5.7147,
                "crosses_total": 0.6222,
                "crosses_accurate": 0.3364,
                "touches": 17.7158,
                "possession_lost": 7.0481,
                "dispossessed": 0.5214,
                "duels_lost": 2.7566,
                "aerial_won": 0.6476,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1215,
                "tackles": 0.2787,
                "clearances": 0.1979,
                "total_contest": 2.6276,
                "won_contest": 0.8528,
                "challenges_lost": 0.1446,
                "fouls": 0.1624,
                "fouls_drawn": 0.1668,
                "blocks": 0.0,
                "big_chances_created": 0.1033,
                "big_chances_missed": 0.054,
                "xgot": 0.0872,
                "ball_carries": 7.0064,
                "total_progression": 29.8722,
                "progressive_carries": 0.6737,
                "shots_off_target": 0.5138,
                "bench_appearance_probability": 0.548,
                "bench_expected_minutes": 23.05,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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": 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": 3185,
                "fifa_rank": 1514.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            }
          ]
        },
        "Yankuba Minteh": {
          "player_id": 1400106,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 180,
          "market_value": 42000000,
          "stats": {
            "expected_goals": 0.0643,
            "goal_rate": 0.0593,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0769,
            "key_pass": 1,
            "rating": 6.6958,
            "minutes": 27,
            "total_pass": 9,
            "accurate_pass": 6,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 4,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 7.8326,
            "dispossessed": 0.2441,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "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.0468,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 26,
            "progressive_carries": 2,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.622,
            "bench_expected_minutes": 26.69,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0387,
            "projected_assists": 0,
            "assist_probability": 0.046,
            "finishing_factor": 1.0149,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1148,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 3,
                "tackles_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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 89,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2882,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 14,
                "key_pass": 1,
                "interceptions": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2246,
                "expected_assists": 0.1116,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 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": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3172,
                "expected_assists": 0.0574,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 77,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0178,
                "expected_assists": 0.0509,
                "total_shots": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "tackles": 4,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3435,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "aerial_won": 3,
                "duels_won": 12,
                "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": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 80,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0933,
                "expected_assists": 0.2006,
                "total_shots": 2,
                "total_pass": 26,
                "accurate_pass": 16,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024015,
              "match_date": "2026-03-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 76,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.231,
                "expected_assists": 0.3947,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 18,
                "key_pass": 3,
                "interceptions": 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": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 76,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0169,
                "expected_assists": 0.7064,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 6,
                "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": 14023933,
              "match_date": "2026-03-04",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 45,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0237,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": 1459,
            "combined_rank_score": 602.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 505.0,
            "sofascore_rating": 6.8559,
            "sofascore_appearances": 34.0,
            "fifa_rank": 699.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.6958,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yankuba Minteh",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mike Penders",
                  "ranking": 1454
                },
                {
                  "player_name": "Jarrad Branthwaite",
                  "ranking": 1455
                },
                {
                  "player_name": "Leonardo Valencia",
                  "ranking": 1456
                },
                {
                  "player_name": "Gulyamkhaydar Gulyamov",
                  "ranking": 1457
                },
                {
                  "player_name": "Lachlan Wales",
                  "ranking": 1458
                }
              ],
              "lower": [
                {
                  "player_name": "Ladislav Krejčí",
                  "ranking": 1460
                },
                {
                  "player_name": "Andreas Kuen",
                  "ranking": 1461
                },
                {
                  "player_name": "Bekhruz Shaydulov",
                  "ranking": 1462
                },
                {
                  "player_name": "Nicolás Palma",
                  "ranking": 1463
                },
                {
                  "player_name": "Ahmadullo Muqimjonov",
                  "ranking": 1464
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.691976588065373,
            "bench_appearance_prob": 0.6223625721847896,
            "market_value_adjustment": 1.011,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (34 historical appearances) to 26.7 expected mins (appearance prob 0.62)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0595,
                "goals": 0.0611,
                "goal_rate": 0.0611,
                "shots_on_target": 0.1979,
                "total_shots": 0.6434,
                "expected_assists": 0.0713,
                "key_pass": 0.5821,
                "rating": 6.6958,
                "minutes": 27.84,
                "total_pass": 9.118,
                "accurate_pass": 6.0683,
                "duels_won": 2.6165,
                "total_long_balls": 0.1555,
                "accurate_long_balls": 0.1555,
                "total_opp_half_passes": 6.7076,
                "accurate_opp_half_passes": 3.7901,
                "crosses_total": 2.9152,
                "crosses_accurate": 0.4475,
                "touches": 20.0717,
                "possession_lost": 8.0806,
                "dispossessed": 0.2414,
                "duels_lost": 3.3651,
                "aerial_lost": 1.0488,
                "total_contest": 2.318,
                "won_contest": 1.0106,
                "ball_recovery": 1.1417,
                "challenges_lost": 0.4124,
                "fouls": 0.3552,
                "fouls_drawn": 0.3019,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1753,
                "tackles_won": 0.8936,
                "tackles": 1.1775,
                "clearances": 0.2829,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0433,
                "offsides": 0.253,
                "ball_carries": 6.7058,
                "total_progression": 27.1658,
                "progressive_carries": 1.6945,
                "shots_off_target": 0.4455
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Burnley",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Liverpool FC",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Sunderland",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-03-04",
                    "opponent": "Arsenal",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0828,
                  "totalOppositionHalfPasses": 14.0581,
                  "accurateOppositionHalfPasses": 9.9082,
                  "accuratePass": 13.8975,
                  "totalShots": 0.7671
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05953378230333328,
                    "model_output": 0.0595,
                    "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.0898
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0171
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0072
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0058
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0157,
                      "total": 0.0595,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.600457
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.170934
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.081354
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.071082
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.050726
                        }
                      ],
                      "others_margin": -0.23198
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06110437959432602,
                    "model_output": 0.0611,
                    "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.0869
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0147
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0057
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.0611,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.555635
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.134244
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.127836
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.066051
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.054245
                        }
                      ],
                      "others_margin": -0.266296
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.1978645920753479,
                    "model_output": 0.1979,
                    "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.2241
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0264
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0226
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0183
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0166
                        }
                      ],
                      "others": -0.0311,
                      "total": 0.1979,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.540055
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.088216
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.082192
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.071855
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.070114
                        }
                      ],
                      "others_margin": -0.145945
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6433784365653992,
                    "model_output": 0.6434,
                    "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.4779
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1403
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0541
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0417
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0256
                        }
                      ],
                      "others": -0.0791,
                      "total": 0.6434,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.47785
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.140254
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.054082
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.041723
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.025562
                        }
                      ],
                      "others_margin": -0.079302
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0712549015879631,
                    "model_output": 0.0713,
                    "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.0188
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0064
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0066
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0027
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0024
                        }
                      ],
                      "others": 0.0131,
                      "total": 0.0713,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.345977
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.13177
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.11941
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.048102
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.04153
                        }
                      ],
                      "others_margin": 0.204331
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5820972323417664,
                    "model_output": 0.5821,
                    "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.2558
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0576
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.037
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0268
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0236
                        }
                      ],
                      "others": 0.0725,
                      "total": 0.5821,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.477322
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.129015
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.074869
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.053602
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.04749
                        }
                      ],
                      "others_margin": 0.132992
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.695783615112305,
                    "model_output": 6.6958,
                    "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.0759
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0216
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.021
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0197
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0128
                        }
                      ],
                      "others": -0.0262,
                      "total": 6.6958,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.075874
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.021629
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.021024
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.019689
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.012788
                        }
                      ],
                      "others_margin": -0.026255
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 8,
                  "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.0110, quality 0.791)",
              "stats": {
                "expected_goals": 0.0602,
                "goals": 0.0618,
                "goal_rate": 0.0618,
                "shots_on_target": 0.2,
                "total_shots": 0.6505,
                "expected_assists": 0.072,
                "key_pass": 0.5885,
                "rating": 6.6958,
                "minutes": 27.84,
                "total_pass": 9.2183,
                "accurate_pass": 6.1351,
                "duels_won": 2.6453,
                "total_long_balls": 0.1572,
                "accurate_long_balls": 0.1572,
                "total_opp_half_passes": 6.7814,
                "accurate_opp_half_passes": 3.8318,
                "crosses_total": 2.9473,
                "crosses_accurate": 0.4524,
                "touches": 20.2925,
                "possession_lost": 8.1695,
                "dispossessed": 0.2441,
                "duels_lost": 3.4021,
                "aerial_lost": 1.0603,
                "total_contest": 2.3435,
                "won_contest": 1.0217,
                "ball_recovery": 1.1543,
                "challenges_lost": 0.4169,
                "fouls": 0.3591,
                "fouls_drawn": 0.3052,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1772,
                "tackles_won": 0.9034,
                "tackles": 1.1905,
                "clearances": 0.286,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0438,
                "offsides": 0.2558,
                "ball_carries": 6.7796,
                "total_progression": 27.4646,
                "progressive_carries": 1.7131,
                "shots_off_target": 0.4504
              },
              "params": {
                "market_value_eur": 42000000,
                "quality_factor": 0.7909,
                "boost_factor": 1.011,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 27.8 to 26.7 expected minutes (appearance prob 0.62)",
              "stats": {
                "expected_goals": 0.0577,
                "goals": 0.0593,
                "goal_rate": 0.0593,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.069,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.042,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "expected_minutes": 26.69,
                "projection_minutes": 27.84,
                "minutes_scale": 0.9588,
                "appearance_probability": 0.622
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0577,
                "goals": 0.0593,
                "goal_rate": 0.0593,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.069,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.042,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "expected_goals": 0.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.0149,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 0.622
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0577,
                  "after": 0.0643
                },
                {
                  "stat": "expected_assists",
                  "before": 0.069,
                  "after": 0.0769
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 17 by projected rating, fifa_overall 80.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.0149,
                "creation_factor": 0.8,
                "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": 1459,
                "fifa_rank": 699.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.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0387,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0149,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0387,
                "scorer_weight": 0.0406,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0241,
                "finishing_factor": 1.0149,
                "appearance_weight": 0.622,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0387,
                "projected_assists": 0,
                "assist_probability": 0.046,
                "finishing_factor": 1.0149,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.046,
                "provider_weight": 0.0383,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0321,
                "creation_factor": 0.8,
                "appearance_weight": 0.622,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Evan Ferguson": {
          "player_id": 999231,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 28,
          "height": 188,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.098,
            "goal_rate": 0.0551,
            "goals": 0,
            "total_shots": 1,
            "shots_on_target": 0,
            "expected_assists": 0.0356,
            "duels_won": 1,
            "aerial_won": 1,
            "rating": 7.2,
            "minutes": 26,
            "total_pass": 9,
            "accurate_pass": 7,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 13,
            "possession_lost": 2.7547,
            "dispossessed": 1.3,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 2,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.029,
            "assists": 0,
            "shots_off_target": 0,
            "key_pass": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.075,
            "offsides": 1,
            "ball_carries": 7,
            "total_progression": 17,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.595,
            "bench_expected_minutes": 26.1,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0555,
            "projected_assists": 0,
            "assist_probability": 0.0208,
            "finishing_factor": 0.8,
            "creation_factor": 0.9646,
            "fifa_overall": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3599,
            "combined_rank_score": 1566.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 4.0,
            "fifa_rank": 2688.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Evan Ferguson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Arijanet Murić",
                  "ranking": 3594
                },
                {
                  "player_name": "Puado",
                  "ranking": 3595
                },
                {
                  "player_name": "Carlos Alcaraz",
                  "ranking": 3596
                },
                {
                  "player_name": "Marash Kumbulla",
                  "ranking": 3597
                },
                {
                  "player_name": "Fidalgo",
                  "ranking": 3598
                }
              ],
              "lower": [
                {
                  "player_name": "Moncayola",
                  "ranking": 3600
                },
                {
                  "player_name": "Pathé Ciss",
                  "ranking": 3601
                },
                {
                  "player_name": "Jon Mikel Aramburu",
                  "ranking": 3602
                },
                {
                  "player_name": "Gabriel Neves",
                  "ranking": 3603
                },
                {
                  "player_name": "Carmona",
                  "ranking": 3604
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "F_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 26.09746860076133,
            "bench_appearance_prob": 0.5953394818527877,
            "market_value_adjustment": 0.6408,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€21,000,000) scaled to 26.1 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position F (quality 0.64)",
              "stats": {
                "expected_goals": 0.303,
                "goals": 0.19,
                "goal_rate": 0.19,
                "total_shots": 3.0,
                "shots_on_target": 1.6,
                "expected_assists": 0.11,
                "duels_won": 4.7,
                "aerial_won": 1.8,
                "rating": 7.2,
                "minutes": 90.0,
                "total_pass": 32.0,
                "accurate_pass": 24.0,
                "total_long_balls": 1.5,
                "accurate_long_balls": 0.7,
                "total_opp_half_passes": 18.0,
                "accurate_opp_half_passes": 13.0,
                "crosses_total": 1.8,
                "crosses_accurate": 0.8,
                "touches": 46.0,
                "possession_lost": 9.5,
                "dispossessed": 1.3,
                "duels_lost": 5.1,
                "aerial_lost": 1.5,
                "total_contest": 6.2,
                "won_contest": 3.4,
                "ball_recovery": 2.3,
                "challenges_lost": 1.5,
                "fouls": 1.6,
                "fouls_drawn": 1.5,
                "assists": 0.1,
                "assist_rate": 0.1,
                "shots_off_target": 1.0,
                "key_pass": 1.1,
                "interceptions": 0.4,
                "tackles_won": 0.6,
                "tackles": 0.8,
                "clearances": 0.5,
                "blocks": 0.3,
                "big_chances_created": 0.11,
                "big_chances_missed": 0.18,
                "xgot": 0.232,
                "offsides": 0.9,
                "ball_carries": 23.0,
                "total_progression": 57.0,
                "progressive_carries": 6.0
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 26.1 expected minutes (appearance prob 0.60)",
              "stats": {
                "expected_goals": 0.0879,
                "goals": 0.0551,
                "goal_rate": 0.0551,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0319,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assists": 0.029,
                "assist_rate": 0.029,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.0673,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "expected_minutes": 26.1,
                "projection_minutes": 90.0,
                "minutes_scale": 0.29,
                "appearance_probability": 0.595
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0879,
                "goals": 0.0551,
                "goal_rate": 0.0551,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0319,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assists": 0.029,
                "assist_rate": 0.029,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.0673,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "expected_goals": 0.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.8,
                "creation_factor": 0.9646
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 0.595
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0879,
                  "after": 0.098
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 3 by projected rating, fifa_overall 74.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.8,
                "creation_factor": 0.9646,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3599,
                "fifa_rank": 2688.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.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.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0555,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.9646,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0555,
                "scorer_weight": 0.0466,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0277,
                "finishing_factor": 0.8,
                "appearance_weight": 0.595,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0555,
                "projected_assists": 0,
                "assist_probability": 0.0208,
                "finishing_factor": 0.8,
                "creation_factor": 0.9646,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0208,
                "provider_weight": 0.0204,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0172,
                "creation_factor": 0.9646,
                "appearance_weight": 0.595,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Yankuba Minteh": {
          "player_id": 1400106,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 180,
          "market_value": 42000000,
          "stats": {
            "expected_goals": 0.0643,
            "goal_rate": 0.0593,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0769,
            "key_pass": 1,
            "rating": 6.6958,
            "minutes": 27,
            "total_pass": 9,
            "accurate_pass": 6,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 4,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 7.8326,
            "dispossessed": 0.2441,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "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.0468,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 26,
            "progressive_carries": 2,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.622,
            "bench_expected_minutes": 26.69,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0387,
            "projected_assists": 0,
            "assist_probability": 0.046,
            "finishing_factor": 1.0149,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 14023959,
              "match_date": "2026-05-24",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1148,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 3,
                "tackles_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": 14023954,
              "match_date": "2026-05-17",
              "home_team": "Leeds United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 89,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2882,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 14,
                "key_pass": 1,
                "interceptions": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2246,
                "expected_assists": 0.1116,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 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": 14023949,
              "match_date": "2026-05-02",
              "home_team": "Newcastle United",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3172,
                "expected_assists": 0.0574,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 14024001,
              "match_date": "2026-04-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 77,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0178,
                "expected_assists": 0.0509,
                "total_shots": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "tackles": 4,
                "tackles_won": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025042,
              "match_date": "2026-04-18",
              "home_team": "Tottenham Hotspur",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3435,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "aerial_won": 3,
                "duels_won": 12,
                "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": 14024002,
              "match_date": "2026-04-11",
              "home_team": "Burnley",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Burnley",
              "stats": {
                "minutes": 80,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0933,
                "expected_assists": 0.2006,
                "total_shots": 2,
                "total_pass": 26,
                "accurate_pass": 16,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024015,
              "match_date": "2026-03-21",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 76,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.231,
                "expected_assists": 0.3947,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 18,
                "key_pass": 3,
                "interceptions": 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": 14023996,
              "match_date": "2026-03-14",
              "home_team": "Sunderland",
              "away_team": "Brighton & Hove Albion",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brighton & Hove Albion",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 76,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0169,
                "expected_assists": 0.7064,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 6,
                "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": 14023933,
              "match_date": "2026-03-04",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Brighton & Hove Albion",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 45,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0237,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": 1459,
            "combined_rank_score": 602.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 505.0,
            "sofascore_rating": 6.8559,
            "sofascore_appearances": 34.0,
            "fifa_rank": 699.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.6958,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yankuba Minteh",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mike Penders",
                  "ranking": 1454
                },
                {
                  "player_name": "Jarrad Branthwaite",
                  "ranking": 1455
                },
                {
                  "player_name": "Leonardo Valencia",
                  "ranking": 1456
                },
                {
                  "player_name": "Gulyamkhaydar Gulyamov",
                  "ranking": 1457
                },
                {
                  "player_name": "Lachlan Wales",
                  "ranking": 1458
                }
              ],
              "lower": [
                {
                  "player_name": "Ladislav Krejčí",
                  "ranking": 1460
                },
                {
                  "player_name": "Andreas Kuen",
                  "ranking": 1461
                },
                {
                  "player_name": "Bekhruz Shaydulov",
                  "ranking": 1462
                },
                {
                  "player_name": "Nicolás Palma",
                  "ranking": 1463
                },
                {
                  "player_name": "Ahmadullo Muqimjonov",
                  "ranking": 1464
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.691976588065373,
            "bench_appearance_prob": 0.6223625721847896,
            "market_value_adjustment": 1.011,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (34 historical appearances) to 26.7 expected mins (appearance prob 0.62)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0595,
                "goals": 0.0611,
                "goal_rate": 0.0611,
                "shots_on_target": 0.1979,
                "total_shots": 0.6434,
                "expected_assists": 0.0713,
                "key_pass": 0.5821,
                "rating": 6.6958,
                "minutes": 27.84,
                "total_pass": 9.118,
                "accurate_pass": 6.0683,
                "duels_won": 2.6165,
                "total_long_balls": 0.1555,
                "accurate_long_balls": 0.1555,
                "total_opp_half_passes": 6.7076,
                "accurate_opp_half_passes": 3.7901,
                "crosses_total": 2.9152,
                "crosses_accurate": 0.4475,
                "touches": 20.0717,
                "possession_lost": 8.0806,
                "dispossessed": 0.2414,
                "duels_lost": 3.3651,
                "aerial_lost": 1.0488,
                "total_contest": 2.318,
                "won_contest": 1.0106,
                "ball_recovery": 1.1417,
                "challenges_lost": 0.4124,
                "fouls": 0.3552,
                "fouls_drawn": 0.3019,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1753,
                "tackles_won": 0.8936,
                "tackles": 1.1775,
                "clearances": 0.2829,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0433,
                "offsides": 0.253,
                "ball_carries": 6.7058,
                "total_progression": 27.1658,
                "progressive_carries": 1.6945,
                "shots_off_target": 0.4455
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-10T10:06:30.670657+00:00",
                  "trained_on": {
                    "matches": 1318,
                    "players": 603,
                    "rows": 15398
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Manchester United",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Leeds United",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Chelsea",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Burnley",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Liverpool FC",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Sunderland",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-03-04",
                    "opponent": "Arsenal",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0828,
                  "totalOppositionHalfPasses": 14.0581,
                  "accurateOppositionHalfPasses": 9.9082,
                  "accuratePass": 13.8975,
                  "totalShots": 0.7671
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05953378230333328,
                    "model_output": 0.0595,
                    "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.0898
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0171
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0072
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0058
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0157,
                      "total": 0.0595,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.600457
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.170934
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.081354
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.071082
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.050726
                        }
                      ],
                      "others_margin": -0.23198
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06110437959432602,
                    "model_output": 0.0611,
                    "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.0869
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0147
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0057
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.0611,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.555635
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.134244
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.127836
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.066051
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.054245
                        }
                      ],
                      "others_margin": -0.266296
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.1978645920753479,
                    "model_output": 0.1979,
                    "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.2241
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0264
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0226
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0183
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0166
                        }
                      ],
                      "others": -0.0311,
                      "total": 0.1979,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.540055
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.088216
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.082192
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.071855
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.070114
                        }
                      ],
                      "others_margin": -0.145945
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6433784365653992,
                    "model_output": 0.6434,
                    "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.4779
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1403
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0541
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0417
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0256
                        }
                      ],
                      "others": -0.0791,
                      "total": 0.6434,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.47785
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.140254
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.054082
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.041723
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.025562
                        }
                      ],
                      "others_margin": -0.079302
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0712549015879631,
                    "model_output": 0.0713,
                    "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.0188
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0064
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0066
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0027
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0024
                        }
                      ],
                      "others": 0.0131,
                      "total": 0.0713,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.345977
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.13177
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.11941
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.048102
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.04153
                        }
                      ],
                      "others_margin": 0.204331
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5820972323417664,
                    "model_output": 0.5821,
                    "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.2558
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0576
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.037
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0268
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0236
                        }
                      ],
                      "others": 0.0725,
                      "total": 0.5821,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.477322
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.129015
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.074869
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.053602
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.04749
                        }
                      ],
                      "others_margin": 0.132992
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.695783615112305,
                    "model_output": 6.6958,
                    "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.0759
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0216
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.021
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0197
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0128
                        }
                      ],
                      "others": -0.0262,
                      "total": 6.6958,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.075874
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.021629
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.021024
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.019689
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.012788
                        }
                      ],
                      "others_margin": -0.026255
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 8,
                  "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.0110, quality 0.791)",
              "stats": {
                "expected_goals": 0.0602,
                "goals": 0.0618,
                "goal_rate": 0.0618,
                "shots_on_target": 0.2,
                "total_shots": 0.6505,
                "expected_assists": 0.072,
                "key_pass": 0.5885,
                "rating": 6.6958,
                "minutes": 27.84,
                "total_pass": 9.2183,
                "accurate_pass": 6.1351,
                "duels_won": 2.6453,
                "total_long_balls": 0.1572,
                "accurate_long_balls": 0.1572,
                "total_opp_half_passes": 6.7814,
                "accurate_opp_half_passes": 3.8318,
                "crosses_total": 2.9473,
                "crosses_accurate": 0.4524,
                "touches": 20.2925,
                "possession_lost": 8.1695,
                "dispossessed": 0.2441,
                "duels_lost": 3.4021,
                "aerial_lost": 1.0603,
                "total_contest": 2.3435,
                "won_contest": 1.0217,
                "ball_recovery": 1.1543,
                "challenges_lost": 0.4169,
                "fouls": 0.3591,
                "fouls_drawn": 0.3052,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1772,
                "tackles_won": 0.9034,
                "tackles": 1.1905,
                "clearances": 0.286,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0438,
                "offsides": 0.2558,
                "ball_carries": 6.7796,
                "total_progression": 27.4646,
                "progressive_carries": 1.7131,
                "shots_off_target": 0.4504
              },
              "params": {
                "market_value_eur": 42000000,
                "quality_factor": 0.7909,
                "boost_factor": 1.011,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 27.8 to 26.7 expected minutes (appearance prob 0.62)",
              "stats": {
                "expected_goals": 0.0577,
                "goals": 0.0593,
                "goal_rate": 0.0593,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.069,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.042,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "expected_minutes": 26.69,
                "projection_minutes": 27.84,
                "minutes_scale": 0.9588,
                "appearance_probability": 0.622
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0577,
                "goals": 0.0593,
                "goal_rate": 0.0593,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.069,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.042,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "expected_goals": 0.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.0149,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 0.622
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0577,
                  "after": 0.0643
                },
                {
                  "stat": "expected_assists",
                  "before": 0.069,
                  "after": 0.0769
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 17 by projected rating, fifa_overall 80.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.0149,
                "creation_factor": 0.8,
                "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": 1459,
                "fifa_rank": 699.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.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0387,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0149,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0387,
                "scorer_weight": 0.0406,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0241,
                "finishing_factor": 1.0149,
                "appearance_weight": 0.622,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.0643,
                "goal_rate": 0.0593,
                "goals": 0,
                "shots_on_target": 0.1918,
                "total_shots": 0.6237,
                "expected_assists": 0.0769,
                "key_pass": 0.5642,
                "rating": 6.6958,
                "minutes": 26.69,
                "total_pass": 8.8382,
                "accurate_pass": 5.8821,
                "duels_won": 2.5362,
                "total_long_balls": 0.1507,
                "accurate_long_balls": 0.1507,
                "total_opp_half_passes": 6.5018,
                "accurate_opp_half_passes": 3.6738,
                "crosses_total": 2.8258,
                "crosses_accurate": 0.4337,
                "touches": 19.4557,
                "possession_lost": 7.8326,
                "dispossessed": 0.2441,
                "duels_lost": 3.2618,
                "aerial_lost": 1.0603,
                "total_contest": 2.2469,
                "won_contest": 0.9796,
                "ball_recovery": 1.1067,
                "challenges_lost": 0.4169,
                "fouls": 0.3443,
                "fouls_drawn": 0.2926,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1699,
                "tackles_won": 0.8661,
                "tackles": 1.1414,
                "clearances": 0.2742,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0468,
                "offsides": 0.2558,
                "ball_carries": 6.5,
                "total_progression": 26.3321,
                "progressive_carries": 1.6425,
                "shots_off_target": 0.4318,
                "bench_appearance_probability": 0.622,
                "bench_expected_minutes": 26.69,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0387,
                "projected_assists": 0,
                "assist_probability": 0.046,
                "finishing_factor": 1.0149,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.046,
                "provider_weight": 0.0383,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0321,
                "creation_factor": 0.8,
                "appearance_weight": 0.622,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        },
        "Evan Ferguson": {
          "player_id": 999231,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 28,
          "height": 188,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.098,
            "goal_rate": 0.0551,
            "goals": 0,
            "total_shots": 1,
            "shots_on_target": 0,
            "expected_assists": 0.0356,
            "duels_won": 1,
            "aerial_won": 1,
            "rating": 7.2,
            "minutes": 26,
            "total_pass": 9,
            "accurate_pass": 7,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 13,
            "possession_lost": 2.7547,
            "dispossessed": 1.3,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 2,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.029,
            "assists": 0,
            "shots_off_target": 0,
            "key_pass": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.075,
            "offsides": 1,
            "ball_carries": 7,
            "total_progression": 17,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.595,
            "bench_expected_minutes": 26.1,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.434,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0555,
            "projected_assists": 0,
            "assist_probability": 0.0208,
            "finishing_factor": 0.8,
            "creation_factor": 0.9646,
            "fifa_overall": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3599,
            "combined_rank_score": 1566.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 4.0,
            "fifa_rank": 2688.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Evan Ferguson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Arijanet Murić",
                  "ranking": 3594
                },
                {
                  "player_name": "Puado",
                  "ranking": 3595
                },
                {
                  "player_name": "Carlos Alcaraz",
                  "ranking": 3596
                },
                {
                  "player_name": "Marash Kumbulla",
                  "ranking": 3597
                },
                {
                  "player_name": "Fidalgo",
                  "ranking": 3598
                }
              ],
              "lower": [
                {
                  "player_name": "Moncayola",
                  "ranking": 3600
                },
                {
                  "player_name": "Pathé Ciss",
                  "ranking": 3601
                },
                {
                  "player_name": "Jon Mikel Aramburu",
                  "ranking": 3602
                },
                {
                  "player_name": "Gabriel Neves",
                  "ranking": 3603
                },
                {
                  "player_name": "Carmona",
                  "ranking": 3604
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "F_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 26.09746860076133,
            "bench_appearance_prob": 0.5953394818527877,
            "market_value_adjustment": 0.6408,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€21,000,000) scaled to 26.1 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position F (quality 0.64)",
              "stats": {
                "expected_goals": 0.303,
                "goals": 0.19,
                "goal_rate": 0.19,
                "total_shots": 3.0,
                "shots_on_target": 1.6,
                "expected_assists": 0.11,
                "duels_won": 4.7,
                "aerial_won": 1.8,
                "rating": 7.2,
                "minutes": 90.0,
                "total_pass": 32.0,
                "accurate_pass": 24.0,
                "total_long_balls": 1.5,
                "accurate_long_balls": 0.7,
                "total_opp_half_passes": 18.0,
                "accurate_opp_half_passes": 13.0,
                "crosses_total": 1.8,
                "crosses_accurate": 0.8,
                "touches": 46.0,
                "possession_lost": 9.5,
                "dispossessed": 1.3,
                "duels_lost": 5.1,
                "aerial_lost": 1.5,
                "total_contest": 6.2,
                "won_contest": 3.4,
                "ball_recovery": 2.3,
                "challenges_lost": 1.5,
                "fouls": 1.6,
                "fouls_drawn": 1.5,
                "assists": 0.1,
                "assist_rate": 0.1,
                "shots_off_target": 1.0,
                "key_pass": 1.1,
                "interceptions": 0.4,
                "tackles_won": 0.6,
                "tackles": 0.8,
                "clearances": 0.5,
                "blocks": 0.3,
                "big_chances_created": 0.11,
                "big_chances_missed": 0.18,
                "xgot": 0.232,
                "offsides": 0.9,
                "ball_carries": 23.0,
                "total_progression": 57.0,
                "progressive_carries": 6.0
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 26.1 expected minutes (appearance prob 0.60)",
              "stats": {
                "expected_goals": 0.0879,
                "goals": 0.0551,
                "goal_rate": 0.0551,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0319,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assists": 0.029,
                "assist_rate": 0.029,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.0673,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "expected_minutes": 26.1,
                "projection_minutes": 90.0,
                "minutes_scale": 0.29,
                "appearance_probability": 0.595
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0879,
                "goals": 0.0551,
                "goal_rate": 0.0551,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0319,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assists": 0.029,
                "assist_rate": 0.029,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.0673,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.52 (squad xG sum 1.3670, xG scale 1.1149, xA scale 1.1149, team xA 1.10 = 0.72 x lambda)",
              "stats": {
                "expected_goals": 0.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.8,
                "creation_factor": 0.9646
              },
              "params": {
                "team_lambda": 1.524,
                "squad_xg_sum": 1.367,
                "squad_xa_sum": 0.9894,
                "team_expected_assists": 1.103,
                "team_xa_to_xg_ratio": 0.7238,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1149,
                "xa_scale": 1.1149,
                "opponent_lambda": 1.356,
                "scoreline_reset": true,
                "appearance_weight": 0.595
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0879,
                  "after": 0.098
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 3 by projected rating, fifa_overall 74.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "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.8,
                "creation_factor": 0.9646,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3599,
                "fifa_rank": 2688.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.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.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0555,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.9646,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 2,
                "goals_allocated": 0,
                "goal_probability": 0.0555,
                "scorer_weight": 0.0466,
                "squad_weight_total": 1.6857,
                "weight_share": 0.0277,
                "finishing_factor": 0.8,
                "appearance_weight": 0.595,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Charalampos Kostoulas",
                    "weight": 0.3749,
                    "already": 0,
                    "effective_weight": 0.3749,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2586
                  },
                  {
                    "n": 2,
                    "player": "Pascal Groß",
                    "weight": 0.2586,
                    "already": 0,
                    "effective_weight": 0.2586,
                    "runner_up": "Diego Gómez",
                    "runner_up_effective_weight": 0.2561
                  }
                ]
              }
            },
            {
              "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.098,
                "goal_rate": 0.0551,
                "goals": 0,
                "total_shots": 0.8699,
                "shots_on_target": 0.464,
                "expected_assists": 0.0356,
                "duels_won": 1.3629,
                "aerial_won": 0.5219,
                "rating": 7.2,
                "minutes": 26.1,
                "total_pass": 9.2791,
                "accurate_pass": 6.9593,
                "total_long_balls": 0.435,
                "accurate_long_balls": 0.203,
                "total_opp_half_passes": 5.2195,
                "accurate_opp_half_passes": 3.7696,
                "crosses_total": 0.5219,
                "crosses_accurate": 0.232,
                "touches": 13.3387,
                "possession_lost": 2.7547,
                "dispossessed": 1.3,
                "duels_lost": 1.4789,
                "aerial_lost": 1.5,
                "total_contest": 1.7978,
                "won_contest": 0.9859,
                "ball_recovery": 0.6669,
                "challenges_lost": 1.5,
                "fouls": 0.464,
                "fouls_drawn": 0.435,
                "assist_rate": 0.029,
                "assists": 0,
                "shots_off_target": 0.29,
                "key_pass": 0.319,
                "interceptions": 0.116,
                "tackles_won": 0.174,
                "tackles": 0.232,
                "clearances": 0.145,
                "blocks": 0.087,
                "big_chances_created": 0.0319,
                "big_chances_missed": 0.0522,
                "xgot": 0.075,
                "offsides": 0.9,
                "ball_carries": 6.6694,
                "total_progression": 16.5284,
                "progressive_carries": 1.7398,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.434,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0555,
                "projected_assists": 0,
                "assist_probability": 0.0208,
                "finishing_factor": 0.8,
                "creation_factor": 0.9646,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0208,
                "provider_weight": 0.0204,
                "squad_weight_total": 1.1906,
                "weight_share": 0.0172,
                "creation_factor": 0.9646,
                "appearance_weight": 0.595,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Maxim De Cuyper",
                    "weight": 0.2874,
                    "already": 0,
                    "effective_weight": 0.2874,
                    "runner_up": "Pascal Groß",
                    "runner_up_effective_weight": 0.2514
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 2,
        "expected_goals": 1.52,
        "expected_assists": 1.1,
        "total_shots": 16,
        "shots_on_target": 4,
        "total_passes": 534,
        "interceptions": 8,
        "tackles": 15,
        "avg_rating": 6.98,
        "possession_estimated_pct": 49.8,
        "pressing_actions_per_90": 7.6
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Granit Xhaka",
        "attacker_role": "LW",
        "attacker_market_value": 8500000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.505,
        "defenders": [
          "Olivier Boscagli"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.567,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.44,
        "xg_contribution": 0.0354,
        "xg_multiplier": 0.9409,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.2,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Olivier Boscagli",
            "role": "RB",
            "market_value": 13900000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.6,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.56
          }
        ],
        "duel_analysis": "Granit Xhaka (LW) is evenly matched against Olivier Boscagli in a direct 1v1 contest. Duel win probability: 44%.  Matchup xG multiplier ×0.94 (×1.00 = his usual level). Projected xG contribution: 0.035 — with neither side clearly dominant."
      },
      {
        "attacker": "Wilson Isidor",
        "attacker_role": "ST",
        "attacker_market_value": 18500000,
        "attacker_height": 184,
        "attacker_skill_quality": 0.616,
        "defenders": [
          "Luka Vušković",
          "Ferdi Kadıoğlu"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.809,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.2398,
        "xg_multiplier": 0.8472,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Luka Vušković",
            "role": "CB",
            "market_value": 64000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.1,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 1.2,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Ferdi Kadıoğlu",
            "role": "CB",
            "market_value": 36000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Wilson Isidor (ST) faces tough defensive resistance against Luka Vušković and Ferdi Kadıoğlu in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€18M vs €50M avg). Matchup xG multiplier ×0.85 (×1.00 = his usual level). Projected xG contribution: 0.240 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Nilson Angulo",
        "attacker_role": "ST",
        "attacker_market_value": 16500000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.595,
        "defenders": [
          "Luka Vušković",
          "Ferdi Kadıoğlu"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.809,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1219,
        "xg_multiplier": 0.8217,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Luka Vušković",
            "role": "CB",
            "market_value": 64000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.1,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 1.2,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Ferdi Kadıoğlu",
            "role": "CB",
            "market_value": 36000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Nilson Angulo (ST) faces tough defensive resistance against Luka Vušković and Ferdi Kadıoğlu in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€16M vs €50M avg). Matchup xG multiplier ×0.82 (×1.00 = his usual level). Projected xG contribution: 0.122 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Enzo Le Fée",
        "attacker_role": "CDM",
        "attacker_market_value": 26000000,
        "attacker_height": 173,
        "attacker_skill_quality": 0.686,
        "defenders": [
          "Diego Gómez"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.694,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.368,
        "xg_contribution": 0.225,
        "xg_multiplier": 0.9239,
        "shots_in_zone": 0.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Diego Gómez",
            "role": "CDM",
            "market_value": 27000000,
            "tackles_attempted": 2.2,
            "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.632
          }
        ],
        "duel_analysis": "Enzo Le Fée (CDM) faces tough defensive resistance against Diego Gómez in a direct 1v1 contest. Duel win probability: 37%.  Matchup xG multiplier ×0.92 (×1.00 = his usual level). Projected xG contribution: 0.225 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Noah Sadiki",
        "attacker_role": "CDM",
        "attacker_market_value": 37000000,
        "attacker_height": 173,
        "attacker_skill_quality": 0.764,
        "defenders": [
          "Diego Gómez"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.694,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.402,
        "xg_contribution": 0.0889,
        "xg_multiplier": 0.9743,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Diego Gómez",
            "role": "CDM",
            "market_value": 27000000,
            "tackles_attempted": 2.2,
            "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.598
          }
        ],
        "duel_analysis": "Noah Sadiki (CDM) is evenly matched against Diego Gómez in a direct 1v1 contest. Duel win probability: 40%.  Matchup xG multiplier ×0.97 (×1.00 = his usual level). Projected xG contribution: 0.089 — with neither side clearly dominant."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Pascal Groß",
        "attacker_role": "LW",
        "attacker_market_value": 2300000,
        "attacker_height": 181,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Omar Alderete"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.566,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.37,
        "xg_contribution": 0.1922,
        "xg_multiplier": 0.8385,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 1.9,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Omar Alderete",
            "role": "RB",
            "market_value": 13800000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.63
          }
        ],
        "duel_analysis": "Pascal Groß (LW) faces tough defensive resistance against Omar Alderete in a direct 1v1 contest. Duel win probability: 37%.  Matchup xG multiplier ×0.84 (×1.00 = his usual level). Projected xG contribution: 0.192 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Malick Yalcouyé",
        "attacker_role": "CAM",
        "attacker_market_value": 12600000,
        "attacker_height": 171,
        "attacker_skill_quality": 0.552,
        "defenders": [
          "Enzo Le Fée",
          "Noah Sadiki"
        ],
        "defender_roles": [
          "CDM",
          "CDM"
        ],
        "def_skill_quality_avg": 0.725,
        "duel_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1588,
        "xg_multiplier": 0.8559,
        "shots_in_zone": 1.5,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Enzo Le Fée",
            "role": "CDM",
            "market_value": 26000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Noah Sadiki",
            "role": "CDM",
            "market_value": 37000000,
            "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": "Malick Yalcouyé (CAM) faces tough defensive resistance against Enzo Le Fée and Noah Sadiki in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€13M vs €32M avg). Matchup xG multiplier ×0.86 (×1.00 = his usual level). Projected xG contribution: 0.159 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Charalampos Kostoulas",
        "attacker_role": "ST",
        "attacker_market_value": 27000000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.694,
        "defenders": [
          "Kevin Danso",
          "Thomas Meunier"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.531,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.24,
        "xg_contribution": 0.2842,
        "xg_multiplier": 1.0586,
        "shots_in_zone": 2.3,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 1.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Kevin Danso",
            "role": "CB",
            "market_value": 19400000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.76
          },
          {
            "player": "Thomas Meunier",
            "role": "CB",
            "market_value": 1400000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.76
          }
        ],
        "duel_analysis": "Charalampos Kostoulas (ST) is evenly matched against Kevin Danso and Thomas Meunier in a 2-defender block. Duel win probability: 24%. The quality gap is significant (€27M vs €10M avg). Matchup xG multiplier ×1.06 (×1.00 = his usual level). Projected xG contribution: 0.284 — with neither side clearly dominant."
      },
      {
        "attacker": "Diego Gómez",
        "attacker_role": "CDM",
        "attacker_market_value": 27000000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.694,
        "defenders": [
          "Enzo Le Fée"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.686,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.472,
        "xg_contribution": 0.1838,
        "xg_multiplier": 1.0761,
        "shots_in_zone": 1.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Enzo Le Fée",
            "role": "CDM",
            "market_value": 26000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.528
          }
        ],
        "duel_analysis": "Diego Gómez (CDM) is slightly favored against Enzo Le Fée in a direct 1v1 contest. Duel win probability: 47%.  Matchup xG multiplier ×1.08 (×1.00 = his usual level). Projected xG contribution: 0.184 — creating consistent moderate threat."
      },
      {
        "attacker": "Yasin Ayari",
        "attacker_role": "CDM",
        "attacker_market_value": 36000000,
        "attacker_height": 172,
        "attacker_skill_quality": 0.758,
        "defenders": [
          "Enzo Le Fée"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.686,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.448,
        "xg_contribution": 0.1134,
        "xg_multiplier": 1.0409,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Enzo Le Fée",
            "role": "CDM",
            "market_value": 26000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.552
          }
        ],
        "duel_analysis": "Yasin Ayari (CDM) is evenly matched against Enzo Le Fée in a direct 1v1 contest. Duel win probability: 45%.  Matchup xG multiplier ×1.04 (×1.00 = his usual level). Projected xG contribution: 0.113 — with neither side clearly dominant."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.652,
      "away_midfield_power": 0.636,
      "home_creative_power": 0.673,
      "away_creative_power": 0.539,
      "home_defensive_power": 0.65,
      "away_defensive_power": 0.637,
      "home_dominance_ratio": 0.506,
      "home_midfield_count": 3,
      "away_midfield_count": 4,
      "home_midfield_players": [
        "Enzo Le Fée",
        "Noah Sadiki",
        "Granit Xhaka"
      ],
      "away_midfield_players": [
        "Malick Yalcouyé",
        "Diego Gómez",
        "Yasin Ayari",
        "Pascal Groß"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 50.2,
      "estimated_possession_away_pct": 49.8,
      "home_pressing_actions_per_90": 7.7,
      "away_pressing_actions_per_90": 7.6,
      "home_key_passes_projected": 5.5,
      "away_key_passes_projected": 4.7,
      "home_throughball_threat": 2.6,
      "away_throughball_threat": 2.2,
      "key_personal_duel": "Noah Sadiki vs Yasin Ayari",
      "midfield_lambda_factor_home": 1.003,
      "midfield_lambda_factor_away": 0.992
    },
    "formation_analysis": {
      "home_formation": "4-2-3-1",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": 0.0,
      "away_tactical_bonus": 0.0,
      "formation_verdict": "Tactical parity between 4-2-3-1 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.356,
    "away_lambda": 1.524,
    "home_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "CDM vs CDM"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Left Wing vs Right Back — Flank Battle"
    ],
    "home_player_antagonists": {
      "Granit Xhaka": {
        "opponents": [
          "Olivier Boscagli",
          "Yasin Ayari"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Wilson Isidor": {
        "opponents": [
          "Luka Vušković",
          "Ferdi Kadıoğlu"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Nilson Angulo": {
        "opponents": [
          "Luka Vušković",
          "Ferdi Kadıoğlu"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Enzo Le Fée": {
        "opponents": [
          "Diego Gómez",
          "Malick Yalcouyé",
          "Yasin Ayari",
          "Pascal Groß"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Noah Sadiki": {
        "opponents": [
          "Diego Gómez",
          "Malick Yalcouyé"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Omar Alderete": {
        "opponents": [
          "Pascal Groß"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Kevin Danso": {
        "opponents": [
          "Charalampos Kostoulas"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Thomas Meunier": {
        "opponents": [
          "Charalampos Kostoulas"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Robin Roefs": {
        "opponents": [
          "Charalampos Kostoulas",
          "Yasin Ayari"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Nordi Mukiele": {
        "opponents": [
          "Charalampos Kostoulas"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Reinildo Mandava": {
        "opponents": [
          "Charalampos Kostoulas"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Olivier Boscagli": {
        "opponents": [
          "Granit Xhaka"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Luka Vušković": {
        "opponents": [
          "Wilson Isidor",
          "Nilson Angulo"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Ferdi Kadıoğlu": {
        "opponents": [
          "Wilson Isidor",
          "Nilson Angulo"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Diego Gómez": {
        "opponents": [
          "Enzo Le Fée",
          "Noah Sadiki"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Pascal Groß": {
        "opponents": [
          "Omar Alderete",
          "Enzo Le Fée"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Malick Yalcouyé": {
        "opponents": [
          "Enzo Le Fée",
          "Noah Sadiki"
        ],
        "primary_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Charalampos Kostoulas": {
        "opponents": [
          "Kevin Danso",
          "Thomas Meunier"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Yasin Ayari": {
        "opponents": [
          "Enzo Le Fée",
          "Granit Xhaka"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, midfield_pairing"
      },
      "Bart Verbruggen": {
        "opponents": [
          "Wilson Isidor",
          "Nilson Angulo"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Maxim De Cuyper": {
        "opponents": [
          "Wilson Isidor"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Lewis Dunk": {
        "opponents": [
          "Nilson Angulo"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Noah Sadiki vs Yasin Ayari will be the pivotal duel. Total antagonist xG — Home: 0.71, Away: 0.93. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.",
    "lambda_factors": {
      "league_anchor": 1.45,
      "home_advantage_factor": 1.15,
      "home_gk_opposition_factor": 0.8767,
      "away_gk_opposition_factor": 0.8989,
      "home_set_piece_bonus": 0.1309,
      "away_set_piece_bonus": 0.1261,
      "home_defensive_solidity_vs": 0.9192,
      "away_defensive_solidity_vs": 0.9569,
      "home_midfield_factor": 1.003,
      "away_midfield_factor": 0.992,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.5827,
      "away_avg_quality": 0.6408,
      "avg_quality_gap": -0.0581,
      "squad_value_gap_log": -0.3968,
      "top5_value_gap_log": -0.451,
      "attack_value_gap_log": 0.0138,
      "elite_count_gap": -1,
      "combined_quality_gap": -0.1072,
      "stronger_lambda_boost": 0.059,
      "weaker_lambda_suppression": 0.0343,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.711,
          "n_duels": 5,
          "duel_confidence": 0.75,
          "result": 0.8958
        },
        {
          "label": "midfield_factor",
          "factor": 1.003,
          "result": 0.8984
        },
        {
          "label": "formation_bonus",
          "factor": 1.0,
          "result": 0.8984
        },
        {
          "label": "home_advantage",
          "factor": 1.15,
          "result": 1.0332
        },
        {
          "label": "standing_factor",
          "factor": 0.9434,
          "result": 0.9747
        },
        {
          "label": "gk_opposition",
          "factor": 0.8767,
          "result": 0.8545
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9192,
          "result": 0.7855
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.1309,
          "result": 0.9164
        },
        {
          "label": "engine_clamp",
          "pre": 0.9164,
          "result": 0.9164,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.1072,
          "factor": 0.9657,
          "pre": 0.9164,
          "result": 0.885
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 0.885
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.22,
          "result": 1.105
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": true,
          "blending_weight": 0.192,
          "empirical_lambda": 2.4138,
          "result": 1.3563
        },
        {
          "label": "router_clamp",
          "pre": 1.3563,
          "result": 1.356,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "second_leg",
          "applied": false,
          "factor": 1.0,
          "result": 1.356
        },
        {
          "label": "h2h_adjustment",
          "applied": false,
          "multiplier": 1.0,
          "pre": 1.356,
          "result": 1.356,
          "available": false
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.356
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.356
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.356,
          "result": 1.356,
          "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.356
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.9324,
          "n_duels": 5,
          "duel_confidence": 0.75,
          "result": 1.0618
        },
        {
          "label": "midfield_factor",
          "factor": 0.992,
          "result": 1.0533
        },
        {
          "label": "formation_bonus",
          "factor": 1.0,
          "result": 1.0533
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 1.0533
        },
        {
          "label": "standing_factor",
          "factor": 1.2012,
          "result": 1.2652
        },
        {
          "label": "gk_opposition",
          "factor": 0.8989,
          "result": 1.1373
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9569,
          "result": 1.0882
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.1261,
          "result": 1.2143
        },
        {
          "label": "engine_clamp",
          "pre": 1.2143,
          "result": 1.2143,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.1072,
          "factor": 1.059,
          "pre": 1.2143,
          "result": 1.2859
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.2859
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.1903,
          "result": 1.4763
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": true,
          "blending_weight": 0.192,
          "empirical_lambda": 1.7241,
          "result": 1.5239
        },
        {
          "label": "router_clamp",
          "pre": 1.5239,
          "result": 1.524,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "second_leg",
          "applied": false,
          "factor": 1.0,
          "result": 1.524
        },
        {
          "label": "h2h_adjustment",
          "applied": false,
          "multiplier": 1.0,
          "pre": 1.524,
          "result": 1.524,
          "available": false
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.524
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.524
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.524,
          "result": 1.524,
          "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.524
        }
      ],
      "home_bench_lambda_bonus": 0.22,
      "away_bench_lambda_bonus": 0.1903,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "fbref_team_priors": {
        "applied": true,
        "home_squad": "Sunderland",
        "away_squad": "Brighton & Hove Albion",
        "home_goals_per90": 1.0,
        "away_goals_against_per90": 3.5,
        "away_goals_per90": 2.5,
        "home_goals_against_per90": 1.0,
        "home_empirical_lambda": 2.414,
        "away_empirical_lambda": 1.724,
        "blending_weight": 0.192
      },
      "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.356,
      "pre_competitive_floor_away_lambda": 1.524,
      "pre_calibration_home_lambda": 1.3563,
      "pre_calibration_away_lambda": 1.5239,
      "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.356,
      "final_away_lambda": 1.524
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 14,
    "opponent_position": 3,
    "standing_lambda_multiplier": 0.9434,
    "attack_index": 1.016,
    "defense_concede_index": 0.864,
    "form_multiplier": 0.97,
    "team_attack_rate_contextual": 1.43,
    "opp_defense_rate_contextual": 1.22,
    "team_ppg": 1.09,
    "opponent_ppg": 1.64
  },
  "away_standing": {
    "available": true,
    "team_position": 3,
    "opponent_position": 14,
    "standing_lambda_multiplier": 1.2012,
    "attack_index": 1.297,
    "defense_concede_index": 1.193,
    "form_multiplier": 1.03,
    "team_attack_rate_contextual": 1.83,
    "opp_defense_rate_contextual": 1.68,
    "team_ppg": 1.64,
    "opponent_ppg": 1.09
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Sunderland vs Brighton. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 4-2-3-1 vs 4-2-3-1 (duel lambdas: Home 1.356, Away 1.524). Final calibrated Poisson lambdas: Home 1.356, Away 1.524 (most likely score 1-2).",
    "competition": "Premier League",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 11,
      "home_fbref_players": 10,
      "away_starters_count": 11,
      "away_xgboost_players": 11,
      "away_fbref_players": 10,
      "home_bench_modelled": 7,
      "away_bench_modelled": 7
    },
    "team_priors": {
      "applied": true,
      "home_squad": "Sunderland",
      "away_squad": "Brighton & Hove Albion",
      "home_goals_per90": 1.0,
      "away_goals_against_per90": 3.5,
      "away_goals_per90": 2.5,
      "home_goals_against_per90": 1.0,
      "home_empirical_lambda": 2.414,
      "away_empirical_lambda": 1.724,
      "blending_weight": 0.192
    },
    "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.356,
      "away_lambda": 1.524,
      "micro_duel_home_lambda": 1.356,
      "micro_duel_away_lambda": 1.524
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-10T13:31:59Z",
  "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
  }
}